@@ -74,10 +74,12 @@ data LinePart = RoffStr (String, Font)
7474 | MacroArg Int
7575 deriving Show
7676
77+type Arg = [LinePart]
78+
7779-- TODO parse tables (see man tbl)
7880data ManToken = MLine [LinePart]
7981 | MEmptyLine
80− | MMacro MacroKind [[LinePart]]
82+ | MMacro MacroKind [Arg]
8183 deriving Show
8284
8385newtype ManTokens = ManTokens { unManTokens :: Seq.Seq ManToken }
@@ -303,7 +305,7 @@ lexMacro = do
303305 where
304306
305307 resolveMacro :: PandocMonad m
306− => String -> [[LinePart]] -> ManLexer m ManTokens
308+ => String -> [Arg] -> ManLexer m ManTokens
307309 resolveMacro macroName args = do
308310 macros <- customMacros <$> getState
309311 case M.lookup macroName macros of
@@ -319,7 +321,7 @@ lexMacro = do
319321 fillMacroArg x = x
320322 return $ ManTokens . fmap fillMacroArg . unManTokens $ ts
321323
322− lexMacroDef :: PandocMonad m => [[LinePart]] -> ManLexer m ManTokens
324+ lexMacroDef :: PandocMonad m => [Arg] -> ManLexer m ManTokens
323325 lexMacroDef args = do -- macro definition
324326 (macroName, stopMacro) <-
325327 case args of
@@ -338,7 +340,7 @@ lexMacro = do
338340 st{ customMacros = M.insert macroName ts (customMacros st) }
339341 return mempty
340342
341− lexArgs :: PandocMonad m => ManLexer m [[LinePart]]
343+ lexArgs :: PandocMonad m => ManLexer m [Arg]
342344 lexArgs = do
343345 args <- many $ try oneArg
344346 skipMany spacetab
@@ -539,14 +541,14 @@ parseInline = try $ do
539541 MMacro "RB" args -> parseAlternatingFonts [id, strong] args
540542 _ -> mzero
541543
542−parseBold :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
544+parseBold :: PandocMonad m => [Arg] -> ManParser m Inlines
543545parseBold [] = do
544546 MLine lparts <- mline
545547 return $ strong $ linePartsToInlines lparts
546548parseBold args = return $
547549 strong $ mconcat $ intersperse B.space $ map linePartsToInlines args
548550
549−parseItalic :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
551+parseItalic :: PandocMonad m => [Arg] -> ManParser m Inlines
550552parseItalic [] = do
551553 MLine lparts <- mline
552554 return $ emph $ linePartsToInlines lparts
@@ -555,7 +557,7 @@ parseItalic args = return $
555557
556558parseAlternatingFonts :: PandocMonad m
557559 => [Inlines -> Inlines]
558− -> [[LinePart]]
560+ -> [Arg]
559561 -> ManParser m Inlines
560562parseAlternatingFonts constructors args = return $ mconcat $
561563 zipWith (\f arg -> f (linePartsToInlines arg)) (cycle constructors) args
@@ -661,7 +663,7 @@ definitionListItem = try $ do
661663parseDefinitionList :: PandocMonad m => ManParser m Blocks
662664parseDefinitionList = definitionList <$> many1 definitionListItem
663665
664−parseLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
666+parseLink :: PandocMonad m => [Arg] -> ManParser m Inlines
665667parseLink args = do
666668 contents <- mconcat <$> many lineInl
667669 mmacro "UE"
@@ -670,7 +672,7 @@ parseLink args = do
670672 (x:_) -> linePartsToString x
671673 return $ link url "" contents
672674
673−parseEmailLink :: PandocMonad m => [[LinePart]] -> ManParser m Inlines
675+parseEmailLink :: PandocMonad m => [Arg] -> ManParser m Inlines
674676parseEmailLink args = do
675677 contents <- mconcat <$> many lineInl
676678 mmacro "ME"