From 8707ddc5a16f0cdaed471419e133dca5343682f8 Mon Sep 17 00:00:00 2001 From: Anshul Singhvi Date: Fri, 9 May 2025 17:16:15 -0400 Subject: [PATCH 1/5] Serialize MarkdownAST node via Markdown.jl instead Co-authored-by: Michael Goerz --- src/html/HTMLWriter.jl | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/html/HTMLWriter.jl b/src/html/HTMLWriter.jl index 21cb8f6d11..d95c765546 100644 --- a/src/html/HTMLWriter.jl +++ b/src/html/HTMLWriter.jl @@ -2369,6 +2369,26 @@ function domify(dctx::DCtx, node::Node, f::MarkdownAST.FootnoteDefinition) return DOM.Node[] end +# This function provided by Michael Goerz in https://github.com/JuliaDocs/MarkdownAST.jl/issues/18 +function _markdownast_to_str(node::MarkdownAST.Node) + if node.element isa MarkdownAST.Document + document = node + elseif node.element isa MarkdownAST.AbstractBlock + document = MarkdownAST.@ast MarkdownAST.Document() do + MarkdownAST.copy_tree(node) + end + else + @assert node.element isa MarkdownAST.AbstractInline + document = MarkdownAST.@ast MarkdownAST.Document() do + MarkdownAST.Paragraph() do + MarkdownAST.copy_tree(node) + end + end + end + text = Markdown.plain(convert(Markdown.MD, document)) + return strip(text) +end + function domify(dctx::DCtx, node::Node, a::MarkdownAST.Admonition) @tags header div details summary colorclass = @@ -2399,7 +2419,7 @@ function domify(dctx::DCtx, node::Node, a::MarkdownAST.Admonition) # apply a class isempty(cat_sanitized) ? "" : ".is-category-$(cat_sanitized)" end - node_repr = sprint(io -> show(io, node)) + node_repr = _markdownast_to_str(node) content_hash = string(hash(node_repr), base = 16) admonition_id = if !isempty(a.title) base_id = Documenter.slugify(a.title) From 9d8361f165d7c99b62bf550e111e699142df8e83 Mon Sep 17 00:00:00 2001 From: Anshul Singhvi Date: Sat, 10 May 2025 13:38:42 -0400 Subject: [PATCH 2/5] use MDFlatten for now --- src/html/HTMLWriter.jl | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/src/html/HTMLWriter.jl b/src/html/HTMLWriter.jl index d95c765546..3236df53d0 100644 --- a/src/html/HTMLWriter.jl +++ b/src/html/HTMLWriter.jl @@ -2371,21 +2371,7 @@ end # This function provided by Michael Goerz in https://github.com/JuliaDocs/MarkdownAST.jl/issues/18 function _markdownast_to_str(node::MarkdownAST.Node) - if node.element isa MarkdownAST.Document - document = node - elseif node.element isa MarkdownAST.AbstractBlock - document = MarkdownAST.@ast MarkdownAST.Document() do - MarkdownAST.copy_tree(node) - end - else - @assert node.element isa MarkdownAST.AbstractInline - document = MarkdownAST.@ast MarkdownAST.Document() do - MarkdownAST.Paragraph() do - MarkdownAST.copy_tree(node) - end - end - end - text = Markdown.plain(convert(Markdown.MD, document)) + text = Documenter.MDFlatten.mdflatten(node) return strip(text) end From 33a74f9070743bd20454cd904fca7d0efbd6c138 Mon Sep 17 00:00:00 2001 From: Anshul Singhvi Date: Tue, 4 Nov 2025 08:15:54 -0500 Subject: [PATCH 3/5] Delete unneeded helper function --- src/html/HTMLWriter.jl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/html/HTMLWriter.jl b/src/html/HTMLWriter.jl index 8c5fc0c1ae..b82e340b49 100644 --- a/src/html/HTMLWriter.jl +++ b/src/html/HTMLWriter.jl @@ -2485,10 +2485,6 @@ function domify(dctx::DCtx, node::Node, f::MarkdownAST.FootnoteDefinition) end # This function provided by Michael Goerz in https://github.com/JuliaDocs/MarkdownAST.jl/issues/18 -function _markdownast_to_str(node::MarkdownAST.Node) - text = Documenter.MDFlatten.mdflatten(node) - return strip(text) -end function domify(dctx::DCtx, node::Node, a::MarkdownAST.Admonition) @tags header div details summary From adc9931beb26145d609775121e809b503e2608b9 Mon Sep 17 00:00:00 2001 From: Anshul Singhvi Date: Tue, 4 Nov 2025 08:16:11 -0500 Subject: [PATCH 4/5] just run `strip(mdflatten(...))` Co-authored-by: Max Horn --- src/html/HTMLWriter.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/html/HTMLWriter.jl b/src/html/HTMLWriter.jl index b82e340b49..fde1cdedcb 100644 --- a/src/html/HTMLWriter.jl +++ b/src/html/HTMLWriter.jl @@ -2516,7 +2516,7 @@ function domify(dctx::DCtx, node::Node, a::MarkdownAST.Admonition) # apply a class isempty(cat_sanitized) ? "" : ".is-category-$(cat_sanitized)" end - node_repr = _markdownast_to_str(node) + node_repr = strip(mdflatten(node)) content_hash = string(hash(node_repr), base = 16) admonition_id = if !isempty(a.title) base_id = Documenter.slugify(a.title) From 82711e5186fe915efd0562d1d7a551cd17563591 Mon Sep 17 00:00:00 2001 From: Anshul Singhvi Date: Tue, 4 Nov 2025 08:16:23 -0500 Subject: [PATCH 5/5] Apply suggestion from @asinghvi17 --- src/html/HTMLWriter.jl | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/html/HTMLWriter.jl b/src/html/HTMLWriter.jl index fde1cdedcb..e03980648c 100644 --- a/src/html/HTMLWriter.jl +++ b/src/html/HTMLWriter.jl @@ -2484,8 +2484,6 @@ function domify(dctx::DCtx, node::Node, f::MarkdownAST.FootnoteDefinition) return DOM.Node[] end -# This function provided by Michael Goerz in https://github.com/JuliaDocs/MarkdownAST.jl/issues/18 - function domify(dctx::DCtx, node::Node, a::MarkdownAST.Admonition) @tags header div details summary colorclass =