diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2015-11-13 21:25:11 +0100 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2015-11-13 22:04:17 +0100 |
commit | 67cb2809fd07d1f14462af2535ce37b8f4e9e464 (patch) | |
tree | 33a103f4b18c17fb944f9e23c8be41edb1ab954e /src/Text | |
parent | a119ad8d09393c8a168e76aeefcde6ba6417a94b (diff) | |
download | pandoc-67cb2809fd07d1f14462af2535ce37b8f4e9e464.tar.gz |
Org reader: Require whitespace around def list markers
Definition list markers (i.e. double colons `::`) must be surrounded by
whitespace to start a definition item. This rule was not checked
before, resulting in bugs with footnotes and some link types.
Thanks to @conklech for noticing and reporting this issue.
This fixes #2518.
Diffstat (limited to 'src/Text')
-rw-r--r-- | src/Text/Pandoc/Readers/Org.hs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/Org.hs b/src/Text/Pandoc/Readers/Org.hs index c04149e1f..44474a37a 100644 --- a/src/Text/Pandoc/Readers/Org.hs +++ b/src/Text/Pandoc/Readers/Org.hs @@ -994,13 +994,16 @@ definitionListItem :: OrgParser Int -> OrgParser (F (Inlines, [Blocks])) definitionListItem parseMarkerGetLength = try $ do markerLength <- parseMarkerGetLength - term <- manyTill (noneOf "\n\r") (try $ string "::") + term <- manyTill (noneOf "\n\r") (try definitionMarker) line1 <- anyLineNewline blank <- option "" ("\n" <$ blankline) cont <- concat <$> many (listContinuation markerLength) term' <- parseFromString parseInlines term contents' <- parseFromString parseBlocks $ line1 ++ blank ++ cont return $ (,) <$> term' <*> fmap (:[]) contents' + where + definitionMarker = + spaceChar *> string "::" <* (spaceChar <|> lookAhead P.newline) -- parse raw text for one list item, excluding start marker and continuations |