git.iko.soy/typeable/pandoc
on master help sign in
hierarchicalize: ensure that sections get ids...

even if they're in divs. Improves #3057.

commit212406a61d027d85712705e626954e0486a2bc34 authorJohn MacFarlane <jgm@berkeley.edu> dateFri 6 Sep 2019, 09:05 (7 years ago) parent6e2cfd6
2 files changed+15−11
src/Text/Pandoc/Shared.hs+10−6 test/command/3057.md+5−5
src/Text/Pandoc/Shared.hs+10−6
@@ -523,19 +523,23 @@ hierarchicalizeWithIds (Header level attr@(_,classes,_) title':xs) = do
523523 sectionContents' <- hierarchicalizeWithIds sectionContents
524524 rest' <- hierarchicalizeWithIds rest
525525 return $ Sec level newnum attr title' sectionContents' : rest'
526−hierarchicalizeWithIds (Div attr@(_,classes',_)
527− (Header level (_,classes,_) title' : xs):ys)
528− | not ("columns" `elem` classes')
529− , not ("column" `elem` classes') = do
526+hierarchicalizeWithIds (Div (dident,dclasses,dkvs)
527+ (Header level (hident,hclasses,hkvs) title' : xs):ys)
528+ | not ("columns" `elem` dclasses)
529+ , not ("column" `elem` dclasses) = do
530530 lastnum <- S.get
531531 let lastnum' = take level lastnum
532532 let newnum = case length lastnum' of
533− x | "unnumbered" `elem` classes -> []
533+ x | "unnumbered" `elem` hclasses -> []
534534 | x >= level -> init lastnum' ++ [last lastnum' + 1]
535535 | otherwise -> lastnum ++
536536 replicate (level - length lastnum - 1) 0 ++ [1]
537537 unless (null newnum) $ S.put newnum
538− sectionContents' <- hierarchicalizeWithIds xs
538+ let attr = (hident, dclasses ++ hclasses, dkvs ++ hkvs)
539+ sectionContents' <- hierarchicalizeWithIds $
540+ if null dident -- ensure we don't lose an id
541+ then xs
542+ else [Div (dident,[],[]) xs]
539543 rest' <- hierarchicalizeWithIds ys
540544 return $ Sec level newnum attr title' sectionContents' : rest'
541545hierarchicalizeWithIds (x:rest) = do
test/command/3057.md+5−5
@@ -7,9 +7,9 @@
77</div>
88</div>
99^D
10−<section>
10+<section xml:id="one">
1111 <title>one</title>
12− <section>
12+ <section xml:id="two">
1313 <title>two</title>
1414 <para>
1515 </para>
@@ -26,9 +26,9 @@
2626</div>
2727</div>
2828^D
29−<section>
29+<section xml:id="one">
3030 <title>one</title>
31− <section>
31+ <section xml:id="two">
3232 <title>two</title>
3333 <para>
3434 </para>
@@ -48,7 +48,7 @@
4848 <para>
4949 </para>
5050</section>
51−<section>
51+<section xml:id="two">
5252 <title>two</title>
5353 <para>
5454 </para>