HTML writer: fix duplicate attributes on headings.

Another regression from 2.7.x. Closes #6062.
This commit is contained in:
John MacFarlane 2020-01-12 15:17:53 -08:00
parent 11e99409ce
commit 157936c927
2 changed files with 16 additions and 9 deletions

View file

@ -29,7 +29,7 @@ module Text.Pandoc.Writers.HTML (
) where
import Control.Monad.State.Strict
import Data.Char (ord)
import Data.List (intercalate, intersperse, partition, delete)
import Data.List (intercalate, intersperse, partition, delete, (\\))
import Data.Maybe (fromMaybe, isJust, isNothing, mapMaybe)
import qualified Data.Set as Set
import Data.Text (Text)
@ -664,16 +664,9 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
else case splitBy isPause xs of
[] -> ([],[])
(z:zs) -> ([],z ++ concatMap inDiv zs)
let classes' = ordNub $
["title-slide" | titleSlide] ++ ["slide" | slide] ++
["section" | (slide || writerSectionDivs opts) &&
not html5 ] ++
["level" <> tshow level | slide || writerSectionDivs opts ]
<> dclasses
let secttag = if html5
then H5.section
else H.div
let attr = (ident, classes', dkvs)
titleContents <- blockListToHtml opts titleBlocks
inSection <- gets stInSection
innerContents <- do
@ -681,6 +674,13 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
res <- blockListToHtml opts innerSecs
modify $ \st -> st{ stInSection = inSection }
return res
let classes' = ordNub $
["title-slide" | titleSlide] ++ ["slide" | slide] ++
["section" | (slide || writerSectionDivs opts) &&
not html5 ] ++
["level" <> tshow level | slide || writerSectionDivs opts ]
<> dclasses
let attr = (ident, classes', dkvs)
if titleSlide
then do
t <- addAttrs opts attr $
@ -704,7 +704,8 @@ blockToHtml opts (Div (ident, "section":dclasses, dkvs)
then mempty
else innerContents <> nl opts
else do
t <- addAttrs opts attr header'
let attr' = (ident, classes' \\ hclasses, dkvs \\ hkvs)
t <- addAttrs opts attr' header'
return $ t <>
if null innerSecs
then mempty

6
test/command/6062.md Normal file
View file

@ -0,0 +1,6 @@
```
% pandoc -f native -t html
[Header 1 ("section",["foo","unnumbered"],[("key","val")]) [Str "1"]]
^D
<h1 class="foo unnumbered" data-key="val" id="section">1</h1>
```