@@ -61,13 +61,7 @@ import Text.Pandoc.GroffChar (characterCodes, combiningAccents)
6161--
6262data FontKind = Bold | Italic | Monospace | Regular deriving (Show, Eq, Ord)
6363
64−data MacroKind = KTitle
65− | KCodeBlStart
66− | KCodeBlEnd
67− | KTab
68− | KTabEnd
69− | KSubTab
70− deriving (Show, Eq)
64+type MacroKind = String
7165
7266type Font = Set FontKind
7367
@@ -291,17 +285,9 @@ lexMacro = do
291285 macroName <- many1 (letter <|> oneOf ['\\', '"', '&'])
292286 args <- lexArgs
293287 let joinedArgs = unwords $ fst <$> args
294− knownMacro mkind = MMacro mkind args
295288
296289 tok = case macroName of
297290 x | x `elem` ["\\\"", "\\#"] -> MComment joinedArgs
298− "TH" -> knownMacro KTitle
299− "IP" -> knownMacro KTab
300− "TP" -> knownMacro KTab
301− "RE" -> knownMacro KTabEnd
302− "RS" -> knownMacro KSubTab
303− "nf" -> knownMacro KCodeBlStart
304− "fi" -> knownMacro KCodeBlEnd
305291 "B" -> MStr (joinedArgs, singleton Bold)
306292 "BR" -> MMaybeLink joinedArgs
307293 x | x `elem` ["BI", "IB"] -> MStr (joinedArgs, S.fromList [Italic, Bold])
@@ -309,7 +295,7 @@ lexMacro = do
309295 "SH" -> MHeader 2 args
310296 "SS" -> MHeader 3 args
311297 x | x `elem` [ "P", "PP", "LP", "sp"] -> MEmptyLine
312− _ -> MUnknownMacro macroName args
298+ _ -> MMacro macroName args
313299 return tok
314300
315301 where
@@ -438,7 +424,7 @@ mcomment = msatisfy isMComment where
438424
439425parseTitle :: PandocMonad m => ManParser m Blocks
440426parseTitle = do
441− (MMacro _ args) <- mmacro KTitle
427+ (MMacro _ args) <- mmacro "TH"
442428 if null args
443429 then return mempty
444430 else do
@@ -527,9 +513,9 @@ parseInlines = do
527513
528514parseCodeBlock :: PandocMonad m => ManParser m Blocks
529515parseCodeBlock = do
530− mmacro KCodeBlStart
516+ mmacro "nf"
531517 toks <- many (mstr <|> mline <|> mmaybeLink <|> memplyLine <|> munknownMacro <|> mcomment)
532− mmacro KCodeBlEnd
518+ mmacro "fi"
533519 return $ codeBlock (removeFinalNewline $
534520 intercalate "\n" . catMaybes $
535521 extractText <$> toks)
@@ -574,7 +560,7 @@ parseList = do
574560
575561 paras :: PandocMonad m => ManParser m (ListBuilder, Blocks)
576562 paras = do
577− (MMacro _ args) <- mmacro KTab
563+ (MMacro _ args) <- mmacro "IP"
578564 let lbuilder = listKind args
579565 inls <- parseInlines
580566 subls <- mconcat <$> many sublist
@@ -582,9 +568,9 @@ parseList = do
582568
583569 sublist :: PandocMonad m => ManParser m Blocks
584570 sublist = do
585− mmacro KSubTab
571+ mmacro "RS"
586572 bl <- parseList
587− mmacro KTabEnd
573+ mmacro "RE"
588574 return bl
589575
590576-- In case of weird man file it will be parsed succesfully