aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2024-02-03 12:47:48 -0800
committerJohn MacFarlane <[email protected]>2024-02-03 12:47:48 -0800
commit6fc8a80c2cdeaf71b7fe6d20c35b46ef562ca67c (patch)
tree4a1b48c51e8cf3a5406881083a9a8622e640743c
parent4d2992dce44d796cf406b11a13848d92f27260db (diff)
Shared.makeSections: more elegant code for section number calculation.
-rw-r--r--src/Text/Pandoc/Shared.hs15
1 files 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)