@@ -149,9 +149,16 @@ inlinesInTags tag = try $ do
149blocksInTags :: String -> MWParser Blocks
149blocksInTags :: String -> MWParser Blocks
150blocksInTags tag = try $ do
150blocksInTags tag = try $ do
151 (_,raw) <- htmlTag (~== TagOpen tag [])
151 (_,raw) <- htmlTag (~== TagOpen tag [])
152+ let closer = if tag == "li"
153+ then htmlTag (~== TagClose "li")
155+ htmlTag (~== TagOpen "li" [])
156+ <|> htmlTag (~== TagClose "ol")
157+ <|> htmlTag (~== TagClose "ul"))
158+ else htmlTag (~== TagClose tag)
152 if '/' `elem` raw -- self-closing tag
159 if '/' `elem` raw -- self-closing tag
153 then return mempty
160 then return mempty
154− else mconcat <$> manyTill block (htmlTag (~== TagClose tag))
161+ else mconcat <$> manyTill block closer
156charsInTags :: String -> MWParser [Char]
163charsInTags :: String -> MWParser [Char]
157charsInTags tag = try $ do
164charsInTags tag = try $ do
@@ -381,15 +388,13 @@ bulletList = B.bulletList <$>
381orderedList :: MWParser Blocks
388orderedList :: MWParser Blocks
382orderedList =
389orderedList =
383 (B.orderedList <$> many1 (listItem '#'))
390 (B.orderedList <$> many1 (listItem '#'))
384− <|> (B.orderedList <$> (htmlTag (~== TagOpen "ul" []) *> spaces *>
391+ <|> try
385− many (listItem '#' <|> li) <*
386− optional (htmlTag (~== TagClose "ul"))))
387− <|> do (tag,_) <- htmlTag (~== TagOpen "ol" [])
392+ (do (tag,_) <- htmlTag (~== TagOpen "ol" [])
389− items <- many (listItem '#' <|> li)
394+ items <- many (listItem '#' <|> li)
390− optional (htmlTag (~== TagClose "ol"))
395+ optional (htmlTag (~== TagClose "ol"))
391− let start = fromMaybe 1 $ safeRead $ fromAttrib "start" tag
396+ let start = fromMaybe 1 $ safeRead $ fromAttrib "start" tag
392− return $ B.orderedListWith (start, DefaultStyle, DefaultDelim) items
397+ return $ B.orderedListWith (start, DefaultStyle, DefaultDelim) items)
394definitionList :: MWParser Blocks
399definitionList :: MWParser Blocks
395definitionList = B.definitionList <$> many1 defListItem
400definitionList = B.definitionList <$> many1 defListItem