Man reader: Clean up inline parsing.

This commit is contained in:
John MacFarlane 2018-10-21 12:18:46 -07:00
parent 25248c7a37
commit e388dddefa

View file

@ -545,9 +545,16 @@ parsePara :: PandocMonad m => ManParser m Blocks
parsePara = para . trimInlines <$> parseInlines
parseInlines :: PandocMonad m => ManParser m Inlines
parseInlines = do
inls <- many1 (lineInl <|> parseLink <|> parseEmailLink)
return $ mconcat $ intersperse B.space inls
parseInlines = mconcat . intersperse B.space <$> many1 parseInline
parseInline :: PandocMonad m => ManParser m Inlines
parseInline = do
tok <- mline <|> mmacro "UR" <|> mmacro "MT"
case tok of
MLine lparts -> return $ linePartsToInlines lparts
MMacro "UR" args -> parseLink args
MMacro "MT" args -> parseEmailLink args
_ -> fail "Unknown token in parseInline"
lineInl :: PandocMonad m => ManParser m Inlines
lineInl = do
@ -650,20 +657,18 @@ definitionListItem = try $ do
parseDefinitionList :: PandocMonad m => ManParser m Blocks
parseDefinitionList = definitionList <$> many1 definitionListItem
parseLink :: PandocMonad m => ManParser m Inlines
parseLink = try $ do
MMacro _ args <- mmacro "UR"
contents <- mconcat <$> many1 lineInl
parseLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
parseLink args = do
contents <- mconcat <$> many lineInl
mmacro "UE"
let url = case args of
[] -> ""
(x:_) -> linePartsToString x
return $ link url "" contents
parseEmailLink :: PandocMonad m => ManParser m Inlines
parseEmailLink = do
MMacro _ args <- mmacro "MT"
contents <- mconcat <$> many1 lineInl
parseEmailLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
parseEmailLink args = do
contents <- mconcat <$> many lineInl
mmacro "ME"
let url = case args of
[] -> ""