From 4ee92dce0ce624db2d02c60ae2856a70cfeb6c42 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Tue, 1 Apr 2014 10:36:23 -0700 Subject: [PATCH] MediaWiki reader: Fixed bug in certain nested lists. The bug: If a level 2 list was followed by a level 1 list, the first item of the level 1 list would be lost. Closes #1213. --- src/Text/Pandoc/Readers/MediaWiki.hs | 3 ++- tests/mediawiki-reader.native | 4 ++++ tests/mediawiki-reader.wiki | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Text/Pandoc/Readers/MediaWiki.hs b/src/Text/Pandoc/Readers/MediaWiki.hs index f70b44aad..9bbabd44b 100644 --- a/src/Text/Pandoc/Readers/MediaWiki.hs +++ b/src/Text/Pandoc/Readers/MediaWiki.hs @@ -438,7 +438,8 @@ listItem c = try $ do skipMany spaceChar first <- concat <$> manyTill listChunk newline rest <- many - (try $ string extras *> (concat <$> manyTill listChunk newline)) + (try $ string extras *> lookAhead listStartChar *> + (concat <$> manyTill listChunk newline)) contents <- parseFromString (many1 $ listItem' c) (unlines (first : rest)) case c of diff --git a/tests/mediawiki-reader.native b/tests/mediawiki-reader.native index 87e4043f7..2e97e9484 100644 --- a/tests/mediawiki-reader.native +++ b/tests/mediawiki-reader.native @@ -102,6 +102,10 @@ Pandoc (Meta {unMeta = fromList []}) [[BulletList [[Plain [Str "But",Space,Str "jumping",Space,Str "levels",Space,Str "creates",Space,Str "empty",Space,Str "space."]]]]]]] ,Para [Str "Any",Space,Str "other",Space,Str "start",Space,Str "ends",Space,Str "the",Space,Str "list."] +,BulletList + [[BulletList + [[Plain [Str "two"]]]] + ,[Plain [Str "one"]]] ,OrderedList (1,DefaultStyle,DefaultDelim) [[Plain [Str "Start",Space,Str "each",Space,Str "line"]] ,[Plain [Str "with",Space,Str "a",Space,Str "number",Space,Str "sign",Space,Str "(#)."] diff --git a/tests/mediawiki-reader.wiki b/tests/mediawiki-reader.wiki index 641f98eb9..6a6bc226d 100644 --- a/tests/mediawiki-reader.wiki +++ b/tests/mediawiki-reader.wiki @@ -185,6 +185,9 @@ http://johnmacfarlane.net/pandoc/ *** But jumping levels creates empty space. Any other start ends the list. +** two +* one + # Start each line # with a number sign (#). ## More number signs gives deeper