git.iko.soy/typeable/pandoc
on master help sign in
Man reader: Clean up inline parsing.
commite388dddefa3e4b0793ff23282db80bf885ed019c authorJohn MacFarlane <jgm@berkeley.edu> dateSun 21 Oct 2018, 12:18 (8 years ago) parent25248c7
1 file changed+16−11
src/Text/Pandoc/Readers/Man.hs+16−11
src/Text/Pandoc/Readers/Man.hs+16−11
@@ -545,9 +545,16 @@ parsePara :: PandocMonad m => ManParser m Blocks
545545parsePara = para . trimInlines <$> parseInlines
546546
547547parseInlines :: PandocMonad m => ManParser m Inlines
548−parseInlines = do
549− inls <- many1 (lineInl <|> parseLink <|> parseEmailLink)
550− return $ mconcat $ intersperse B.space inls
548+parseInlines = mconcat . intersperse B.space <$> many1 parseInline
549+
550+parseInline :: PandocMonad m => ManParser m Inlines
551+parseInline = do
552+ tok <- mline <|> mmacro "UR" <|> mmacro "MT"
553+ case tok of
554+ MLine lparts -> return $ linePartsToInlines lparts
555+ MMacro "UR" args -> parseLink args
556+ MMacro "MT" args -> parseEmailLink args
557+ _ -> fail "Unknown token in parseInline"
551558
552559lineInl :: PandocMonad m => ManParser m Inlines
553560lineInl = do
@@ -650,20 +657,18 @@ definitionListItem = try $ do
650657parseDefinitionList :: PandocMonad m => ManParser m Blocks
651658parseDefinitionList = definitionList <$> many1 definitionListItem
652659
653−parseLink :: PandocMonad m => ManParser m Inlines
654−parseLink = try $ do
655− MMacro _ args <- mmacro "UR"
656− contents <- mconcat <$> many1 lineInl
660+parseLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
661+parseLink args = do
662+ contents <- mconcat <$> many lineInl
657663 mmacro "UE"
658664 let url = case args of
659665 [] -> ""
660666 (x:_) -> linePartsToString x
661667 return $ link url "" contents
662668
663−parseEmailLink :: PandocMonad m => ManParser m Inlines
664−parseEmailLink = do
665− MMacro _ args <- mmacro "MT"
666− contents <- mconcat <$> many1 lineInl
669+parseEmailLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
670+parseEmailLink args = do
671+ contents <- mconcat <$> many lineInl
667672 mmacro "ME"
668673 let url = case args of
669674 [] -> ""