aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <[email protected]>2025-08-02 10:49:01 -0700
committerJohn MacFarlane <[email protected]>2025-08-02 10:50:41 -0700
commitbb46c277cab2035fe6fe0bccf8a18f8b2f24ff0b (patch)
tree3b4a49841d31b7a7ae2b70152c0424fd3d666782
parent52e28c31edd785d86212644da67808e2acc8fb0c (diff)
HTML writer: Unwrap "wrapper" divs.
Some of the readers (e.g. djot) add "wrapper" divs to hold attributes for elements that have no slot for attributes in the pandoc AST. With this change, the HTML reader "unwraps" these wrappers so that the attributes go on the intended elements. Closes #11014.
-rw-r--r--src/Text/Pandoc/Writers/HTML.hs5
-rw-r--r--test/command/11014.md9
2 files changed, 14 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Writers/HTML.hs b/src/Text/Pandoc/Writers/HTML.hs
index bb54f0f82..d48a29c5b 100644
--- a/src/Text/Pandoc/Writers/HTML.hs
+++ b/src/Text/Pandoc/Writers/HTML.hs
@@ -845,6 +845,11 @@ blockToHtmlInner opts (Div (ident, "section":dclasses, dkvs)
if null innerSecs
then mempty
else nl <> innerContents
+blockToHtmlInner opts (Div (ident, classes, kvs) [b])
+ | Just "1" <- lookup "wrapper" kvs
+ -- unwrap "wrapper" div, putting attr on child
+ = blockToHtmlInner opts b >>=
+ addAttrs opts (ident, classes, [(k,v) | (k,v) <- kvs, k /= "wrapper"])
blockToHtmlInner opts (Div attr@(ident, classes, kvs') bs) = do
html5 <- gets stHtml5
slideVariant <- gets stSlideVariant
diff --git a/test/command/11014.md b/test/command/11014.md
new file mode 100644
index 000000000..50187d208
--- /dev/null
+++ b/test/command/11014.md
@@ -0,0 +1,9 @@
+```
+% pandoc -f djot -t html
+{.foo}
+- bar
+^D
+<ul class="foo">
+<li>bar</li>
+</ul>
+```