diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2016-11-19 01:17:04 +0100 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2016-11-19 01:17:04 +0100 |
commit | 1a8af5fc442287ef2f7775c4de179e4520487a4f (patch) | |
tree | 245e411f22c70ceb5e4076efb021fb16cf886510 /src/Text/Pandoc | |
parent | f9df62c29fc88634f1d4f264f894265096b0985f (diff) | |
download | pandoc-1a8af5fc442287ef2f7775c4de179e4520487a4f.tar.gz |
Org reader: Ensure images in paragraphs are not parsed as figures
This fixes a regression introduced in
7e5220b57c5a48fabe6e43ba270db812593d3463.
Diffstat (limited to 'src/Text/Pandoc')
-rw-r--r-- | src/Text/Pandoc/Readers/Org/BlockStarts.hs | 26 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Blocks.hs | 6 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Org/Inlines.hs | 15 |
3 files changed, 32 insertions, 15 deletions
diff --git a/src/Text/Pandoc/Readers/Org/BlockStarts.hs b/src/Text/Pandoc/Readers/Org/BlockStarts.hs index e4dc31342..53a999307 100644 --- a/src/Text/Pandoc/Readers/Org/BlockStarts.hs +++ b/src/Text/Pandoc/Readers/Org/BlockStarts.hs @@ -37,9 +37,11 @@ module Text.Pandoc.Readers.Org.BlockStarts , commentLineStart , bulletListStart , orderedListStart + , endOfBlock ) where -import Text.Pandoc.Readers.Org.Parsing +import Control.Monad ( void ) +import Text.Pandoc.Readers.Org.Parsing -- | Horizontal Line (five -- dashes or more) hline :: OrgParser () @@ -110,3 +112,25 @@ noteMarker = try $ do , (++) <$> string "fn:" <*> many1Till (noneOf "\n\r\t ") (char ']') ] + + -- | Succeeds if the parser is at the end of a block. +endOfBlock :: OrgParser () +endOfBlock = lookAhead . try $ do + void blankline <|> anyBlockStart <|> void noteMarker + where + -- | Succeeds if there is a new block starting at this position. + anyBlockStart :: OrgParser () + anyBlockStart = try . choice $ + [ exampleLineStart + , hline + , metaLineStart + , commentLineStart + , void noteMarker + , void tableStart + , void drawerStart + , void headerStart + , void latexEnvStart + , void bulletListStart + , void orderedListStart + ] + diff --git a/src/Text/Pandoc/Readers/Org/Blocks.hs b/src/Text/Pandoc/Readers/Org/Blocks.hs index 481684600..807cce2fc 100644 --- a/src/Text/Pandoc/Readers/Org/Blocks.hs +++ b/src/Text/Pandoc/Readers/Org/Blocks.hs @@ -623,7 +623,7 @@ propertiesDrawer = try $ do figure :: OrgParser (F Blocks) figure = try $ do figAttrs <- blockAttributes - src <- skipSpaces *> selfTarget <* skipSpaces <* newline + src <- skipSpaces *> selfTarget <* skipSpaces <* endOfParagraph case cleanLinkString src of Nothing -> mzero Just imgSrc -> do @@ -652,6 +652,10 @@ figure = try $ do then cs else "fig:" ++ cs +-- | Succeeds if looking at the end of the current paragraph +endOfParagraph :: OrgParser () +endOfParagraph = try $ skipSpaces *> newline *> endOfBlock + -- -- Examples diff --git a/src/Text/Pandoc/Readers/Org/Inlines.hs b/src/Text/Pandoc/Readers/Org/Inlines.hs index 14e77dda9..97b36b388 100644 --- a/src/Text/Pandoc/Readers/Org/Inlines.hs +++ b/src/Text/Pandoc/Readers/Org/Inlines.hs @@ -33,7 +33,7 @@ module Text.Pandoc.Readers.Org.Inlines , linkTarget ) where -import Text.Pandoc.Readers.Org.BlockStarts +import Text.Pandoc.Readers.Org.BlockStarts ( endOfBlock, noteMarker ) import Text.Pandoc.Readers.Org.ParserState import Text.Pandoc.Readers.Org.Parsing import Text.Pandoc.Readers.Org.Shared @@ -152,18 +152,7 @@ str = return . B.str <$> many1 (noneOf $ specialChars ++ "\n\r ") endline :: OrgParser (F Inlines) endline = try $ do newline - notFollowedBy blankline - notFollowedBy' exampleLineStart - notFollowedBy' hline - notFollowedBy' noteMarker - notFollowedBy' tableStart - notFollowedBy' drawerStart - notFollowedBy' headerStart - notFollowedBy' metaLineStart - notFollowedBy' latexEnvStart - notFollowedBy' commentLineStart - notFollowedBy' bulletListStart - notFollowedBy' orderedListStart + notFollowedBy' endOfBlock decEmphasisNewlinesCount guard =<< newlinesCountWithinLimits updateLastPreCharPos |