git.iko.soy/typeable/pandoc
on master help sign in
HTML writer: fix duplicate attributes on headings.

Another regression from 2.7.x. Closes #6062.

commit157936c927a6b4ea40e5f5100ed5cc7714e2b046 authorJohn MacFarlane <jgm@berkeley.edu> dateSun 12 Jan 2020, 15:17 (7 years ago) parent11e9940
2 files changed+16−9
src/Text/Pandoc/Writers/HTML.hs+10−9 test/command/6062.md+6
src/Text/Pandoc/Writers/HTML.hs+10−9
@@ -29,7 +29,7 @@ module Text.Pandoc.Writers.HTML (
2929 ) where
3030import Control.Monad.State.Strict
3131import Data.Char (ord)
32−import Data.List (intercalate, intersperse, partition, delete)
32+import Data.List (intercalate, intersperse, partition, delete, (\\))
3333import Data.Maybe (fromMaybe, isJust, isNothing, mapMaybe)
3434import qualified Data.Set as Set
3535import Data.Text (Text)
@@ -664,16 +664,9 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
664664 else case splitBy isPause xs of
665665 [] -> ([],[])
666666 (z:zs) -> ([],z ++ concatMap inDiv zs)
667− let classes' = ordNub $
668− ["title-slide" | titleSlide] ++ ["slide" | slide] ++
669− ["section" | (slide || writerSectionDivs opts) &&
670− not html5 ] ++
671− ["level" <> tshow level | slide || writerSectionDivs opts ]
672− <> dclasses
673667 let secttag = if html5
674668 then H5.section
675669 else H.div
676− let attr = (ident, classes', dkvs)
677670 titleContents <- blockListToHtml opts titleBlocks
678671 inSection <- gets stInSection
679672 innerContents <- do
@@ -681,6 +674,13 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
681674 res <- blockListToHtml opts innerSecs
682675 modify $ \st -> st{ stInSection = inSection }
683676 return res
677+ let classes' = ordNub $
678+ ["title-slide" | titleSlide] ++ ["slide" | slide] ++
679+ ["section" | (slide || writerSectionDivs opts) &&
680+ not html5 ] ++
681+ ["level" <> tshow level | slide || writerSectionDivs opts ]
682+ <> dclasses
683+ let attr = (ident, classes', dkvs)
684684 if titleSlide
685685 then do
686686 t <- addAttrs opts attr $
@@ -704,7 +704,8 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
704704 then mempty
705705 else innerContents <> nl opts
706706 else do
707− t <- addAttrs opts attr header'
707+ let attr' = (ident, classes' \\ hclasses, dkvs \\ hkvs)
708+ t <- addAttrs opts attr' header'
708709 return $ t <>
709710 if null innerSecs
710711 then mempty
test/command/6062.mdnew file+6
@@ -0,0 +1,6 @@
1+```
2+% pandoc -f native -t html
3+[Header 1 ("section",["foo","unnumbered"],[("key","val")]) [Str "1"]]
4+^D
5+<h1 class="foo unnumbered" data-key="val" id="section">1</h1>
6+```