From 157936c927a6b4ea40e5f5100ed5cc7714e2b046 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sun, 12 Jan 2020 15:17:53 -0800 Subject: HTML writer: fix duplicate attributes on headings. Another regression from 2.7.x. Closes #6062. --- src/Text/Pandoc/Writers/HTML.hs | 19 ++++++++++--------- test/command/6062.md | 6 ++++++ 2 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 test/command/6062.md diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs index b739e2b2d..1bd96c2ca 100644 --- a/src/Text/Pandoc/Writers/HTML.hs +++ b/src/Text/Pandoc/Writers/HTML.hs @@ -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 diff --git a/test/command/6062.md b/test/command/6062.md new file mode 100644 index 000000000..d4f60fcbf --- /dev/null +++ b/test/command/6062.md @@ -0,0 +1,6 @@ +``` +% pandoc -f native -t html +[Header 1 ("section",["foo","unnumbered"],[("key","val")]) [Str "1"]] +^D +

1

+``` -- cgit v1.2.3