@@ -149,9 +149,16 @@ inlinesInTags tag = try $ do
149149blocksInTags :: String -> MWParser Blocks
150150blocksInTags tag = try $ do
151151 (_,raw) <- htmlTag (~== TagOpen tag [])
152+ let closer = if tag == "li"
153+ then htmlTag (~== TagClose "li")
154+ <|> lookAhead (
155+ htmlTag (~== TagOpen "li" [])
156+ <|> htmlTag (~== TagClose "ol")
157+ <|> htmlTag (~== TagClose "ul"))
158+ else htmlTag (~== TagClose tag)
152159 if '/' `elem` raw -- self-closing tag
153160 then return mempty
154− else mconcat <$> manyTill block (htmlTag (~== TagClose tag))
161+ else mconcat <$> manyTill block closer
155162
156163charsInTags :: String -> MWParser [Char]
157164charsInTags tag = try $ do
@@ -381,15 +388,13 @@ bulletList = B.bulletList <$>
381388orderedList :: MWParser Blocks
382389orderedList =
383390 (B.orderedList <$> many1 (listItem '#'))
384− <|> (B.orderedList <$> (htmlTag (~== TagOpen "ul" []) *> spaces *>
385− many (listItem '#' <|> li) <*
386− optional (htmlTag (~== TagClose "ul"))))
387− <|> do (tag,_) <- htmlTag (~== TagOpen "ol" [])
388− spaces
389− items <- many (listItem '#' <|> li)
390− optional (htmlTag (~== TagClose "ol"))
391− let start = fromMaybe 1 $ safeRead $ fromAttrib "start" tag
392− return $ B.orderedListWith (start, DefaultStyle, DefaultDelim) items
391+ <|> try
392+ (do (tag,_) <- htmlTag (~== TagOpen "ol" [])
393+ spaces
394+ items <- many (listItem '#' <|> li)
395+ optional (htmlTag (~== TagClose "ol"))
396+ let start = fromMaybe 1 $ safeRead $ fromAttrib "start" tag
397+ return $ B.orderedListWith (start, DefaultStyle, DefaultDelim) items)
393398
394399definitionList :: MWParser Blocks
395400definitionList = B.definitionList <$> many1 defListItem