diff options
| author | John MacFarlane <[email protected]> | 2024-02-03 12:47:48 -0800 |
|---|---|---|
| committer | John MacFarlane <[email protected]> | 2024-02-03 12:47:48 -0800 |
| commit | 6fc8a80c2cdeaf71b7fe6d20c35b46ef562ca67c (patch) | |
| tree | 4a1b48c51e8cf3a5406881083a9a8622e640743c /src | |
| parent | 4d2992dce44d796cf406b11a13848d92f27260db (diff) | |
Shared.makeSections: more elegant code for section number calculation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Shared.hs | 15 |
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) |
