Skip to content

Commit d55b5eb

Browse files
authored
Use html.Parse rather than html.ParseFragment (#16223)
* Use html.Parse rather than html.ParseFragment There have been a few issues with html.ParseFragment - just use html.Parse instead. * Skip document node Signed-off-by: Andrew Thornton <[email protected]>
1 parent 36c158b commit d55b5eb

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

modules/markup/html.go

+12-13
Original file line numberDiff line numberDiff line change
@@ -304,27 +304,26 @@ func postProcess(ctx *RenderContext, procs []processor, input io.Reader, output
304304
_, _ = res.WriteString("</body></html>")
305305

306306
// parse the HTML
307-
nodes, err := html.ParseFragment(res, nil)
307+
node, err := html.Parse(res)
308308
if err != nil {
309309
return &postProcessError{"invalid HTML", err}
310310
}
311311

312-
for _, node := range nodes {
313-
visitNode(ctx, procs, node, true)
312+
if node.Type == html.DocumentNode {
313+
node = node.FirstChild
314314
}
315315

316-
newNodes := make([]*html.Node, 0, len(nodes))
316+
visitNode(ctx, procs, node, true)
317317

318-
for _, node := range nodes {
319-
if node.Data == "html" {
320-
node = node.FirstChild
321-
for node != nil && node.Data != "body" {
322-
node = node.NextSibling
323-
}
324-
}
325-
if node == nil {
326-
continue
318+
newNodes := make([]*html.Node, 0, 5)
319+
320+
if node.Data == "html" {
321+
node = node.FirstChild
322+
for node != nil && node.Data != "body" {
323+
node = node.NextSibling
327324
}
325+
}
326+
if node != nil {
328327
if node.Data == "body" {
329328
child := node.FirstChild
330329
for child != nil {

0 commit comments

Comments
 (0)