git.iko.soy/typeable/pandoc
on master help sign in
MediaWiki reader: Support skipped level in lists.

For example: # one # two ### skip! ### skip

commitbf2666331d84fff400d75c63f0d8ed3a6d8fc855 authorJohn MacFarlane <jgm@berkeley.edu> dateWed 12 Sep 2012, 16:47 (14 years ago) parent0fdc6de
1 file changed+18−2
src/Text/Pandoc/Readers/MediaWiki.hs+18−2
src/Text/Pandoc/Readers/MediaWiki.hs+18−2
@@ -30,7 +30,6 @@ Conversion of mediawiki text to 'Pandoc' document.
3030-}
3131{-
3232TODO:
33−_ correctly handle skipped level in list, e.g. # to ###
3433_ tests for lists
3534_ support HTML lists
3635_ support list style attributes and start values in ol lists, also
@@ -199,10 +198,27 @@ listStartChar :: MWParser Char
199198listStartChar = oneOf "*#;:"
200199
201200anyListStart :: MWParser ()
202−anyListStart = listStart '*' <|> listStart '#' <|> listStart ';'
201+anyListStart = skipMany1 (char '*')
202+ <|> skipMany1 (char '#')
203+ <|> (() <$ char ';')
203204
204205listItem :: Char -> MWParser Blocks
205206listItem c = try $ do
207+ extras <- many (try $ char c <* lookAhead listStartChar)
208+ if null extras
209+ then listItem' c
210+ else do
211+ first <- manyTill anyChar newline
212+ rest <- many (try $ string extras *> manyTill anyChar newline)
213+ contents <- parseFromString (many1 $ listItem' c)
214+ (unlines (first : rest))
215+ case c of
216+ '*' -> return $ B.bulletList contents
217+ '#' -> return $ B.orderedList contents
218+ _ -> mzero
219+
220+listItem' :: Char -> MWParser Blocks
221+listItem' c = try $ do
206222 listStart c
207223 first <- manyTill anyChar newline
208224 rest <- many (try $ char c *> lookAhead listStartChar *>