From 6fc8a80c2cdeaf71b7fe6d20c35b46ef562ca67c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 3 Feb 2024 12:47:48 -0800 Subject: Shared.makeSections: more elegant code for section number calculation. --- src/Text/Pandoc/Shared.hs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index 06ee95701..b18ec98c5 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -516,15 +516,12 @@ makeSections numbering mbBaseLevel bs = go (Header level (ident,classes,kvs) title':xs) = do (mbLevel, lastnum) <- S.get let level' = fromMaybe level mbLevel - let lastnum' = take level' lastnum - let newnum = - if level' > 0 - then case length lastnum' of - x | "unnumbered" `elem` classes -> [] - | x >= level' -> init lastnum' ++ [last lastnum' + 1] - | otherwise -> lastnum ++ - replicate (level' - length lastnum - 1) 0 ++ [1] - else [] + let adjustNum lev numComponent + | lev < level' = numComponent + | lev == level' = numComponent + 1 + | otherwise = 0 + let newnum = zipWith adjustNum [(fromMaybe 1 mbBaseLevel)..level'] + (lastnum ++ repeat 0) unless (null newnum) $ S.modify $ \(mbl, _) -> (mbl, newnum) let (sectionContents, rest) = break (headerLtEq level) xs S.modify $ \(_, ln) -> (fmap (+ 1) mbLevel, ln) -- cgit v1.2.3