git.iko.soy/typeable/pandoc
on master help sign in
Man reader: improve list parsing.
a49cd34John MacFarlane
src/Text/Pandoc/Readers/Man.hs+13−20
@@ -561,32 +561,25 @@ parseList = do
561
561
562 where
562 where
563
563
564− macroIPInl :: [RoffStr] -> Inlines
565− macroIPInl (x:_:[]) = strToInlines x <> B.space
566− macroIPInl _ = mempty
567−
568− listKind :: [RoffStr] -> Maybe ListBuilder
564+ listKind :: [RoffStr] -> ListBuilder
569− listKind (((c:_), _):_:[]) =
565+ listKind ((cs, _):_:[]) =
570− let params style = orderedListWith (1, style, DefaultDelim)
566+ let cs' = if not ('.' `elem` cs || ')' `elem` cs) then cs ++ "." else cs
571− in case c of
567+ in case Parsec.runParser anyOrderedListMarker defaultParserState
572− _ | isDigit c -> Just $ params Decimal
568+ "list marker" cs' of
573− _ | isUpper c -> Just $ params UpperAlpha
569+ Right (start, listtype, listdelim)
574− _ | isLower c -> Just $ params LowerAlpha
570+ | cs == cs' -> orderedListWith (start, listtype, listdelim)
575− _ -> Nothing
571+ | otherwise -> orderedListWith (start, listtype, DefaultDelim)
576−
572+ Left _ -> bulletList
577− listKind _ = Nothing
573+ listKind _ = bulletList
578
574
579 paras :: PandocMonad m => ManParser m (ListBuilder, Blocks)
575 paras :: PandocMonad m => ManParser m (ListBuilder, Blocks)
580 paras = do
576 paras = do
581 (MMacro _ args) <- mmacro KTab
577 (MMacro _ args) <- mmacro KTab
582− let lbuilderOpt = listKind args
578+ let lbuilder = listKind args
583− lbuilder = fromMaybe bulletList lbuilderOpt
584− macroinl = macroIPInl args
585 inls <- parseInlines
579 inls <- parseInlines
586− let parainls = if isNothing lbuilderOpt then macroinl <> inls else inls
587 subls <- mconcat <$> many sublist
580 subls <- mconcat <$> many sublist
588− return $ (lbuilder, plain parainls <> subls)
581+ return $ (lbuilder, plain inls <> subls)
589−
582+
590 sublist :: PandocMonad m => ManParser m Blocks
583 sublist :: PandocMonad m => ManParser m Blocks
591 sublist = do
584 sublist = do
592 mmacro KSubTab
585 mmacro KSubTab