git.iko.soy/typeable/pandoc
on master help sign in
Man reader: support UR/UE, MT/ME for links.

Closes #4989.

commit9593b375d747d681db0d3aba3af0f1ffd2db0f2f authorJohn MacFarlane <jgm@berkeley.edu> dateSat 20 Oct 2018, 22:55 (8 years ago) parent2b7a541
3 files changed+36−4
src/Text/Pandoc/Readers/Man.hs+22−3 test/man-reader.man+10 test/man-reader.native+4−1
src/Text/Pandoc/Readers/Man.hs+22−3
@@ -497,9 +497,8 @@ parsePara = para . trimInlines <$> parseInlines
497497
498498parseInlines :: PandocMonad m => ManParser m Inlines
499499parseInlines = do
500− inls <- many1 (lineInl <|> comment)
501− let withspaces = intersperse B.space inls
502− return $ mconcat withspaces
500+ inls <- many1 (lineInl <|> comment <|> parseLink <|> parseEmailLink)
501+ return $ mconcat $ intersperse B.space inls
503502
504503lineInl :: PandocMonad m => ManParser m Inlines
505504lineInl = do
@@ -605,6 +604,26 @@ definitionListItem = try $ do
605604parseDefinitionList :: PandocMonad m => ManParser m Blocks
606605parseDefinitionList = definitionList <$> many1 definitionListItem
607606
607+parseLink :: PandocMonad m => ManParser m Inlines
608+parseLink = try $ do
609+ MMacro _ args <- mmacro "UR"
610+ contents <- mconcat <$> many1 (lineInl <|> comment)
611+ mmacro "UE"
612+ let url = case args of
613+ [] -> ""
614+ (x:_) -> linePartsToString x
615+ return $ link url "" contents
616+
617+parseEmailLink :: PandocMonad m => ManParser m Inlines
618+parseEmailLink = do
619+ MMacro _ args <- mmacro "MT"
620+ contents <- mconcat <$> many1 (lineInl <|> comment)
621+ mmacro "ME"
622+ let url = case args of
623+ [] -> ""
624+ (x:_) -> "mailto:" ++ linePartsToString x
625+ return $ link url "" contents
626+
608627parseMacroDef :: PandocMonad m => ManParser m Blocks
609628parseMacroDef = do
610629 MMacro _ args <- mmacro "de"
test/man-reader.man+10
@@ -197,3 +197,13 @@ Plus: +
197197.PP
198198Minus: \-
199199.PP
200+.SH Links
201+.PP
202+.UR http://\:example.com
203+some random
204+site
205+.UE
206+.PP
207+.MT me@example.com
208+my email address.
209+.ME
test/man-reader.native+4−1
@@ -98,4 +98,7 @@ Pandoc (Meta {unMeta = fromList [("date",MetaInlines [Str "Oct",Space,Str "17,",
9898,Para [Str "Period:",Space,Str "."]
9999,Para [Str "Bang:",Space,Str "!"]
100100,Para [Str "Plus:",Space,Str "+"]
101−,Para [Str "Minus:",Space,Str "-"]]
101+,Para [Str "Minus:",Space,Str "-"]
102+,Header 1 ("",[],[]) [Str "Links"]
103+,Para [Link ("",[],[]) [Str "some",Space,Str "randomsite"] ("http://example.com","")]
104+,Para [Link ("",[],[]) [Str "my",Space,Str "email",Space,Str "address."] ("mailto:me@example.com","")]]