Browse Source
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 <art27@cantab.net>
master
zeripath
1 year ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
12 additions and
13 deletions
modules/markup/html.go
@ -304,27 +304,26 @@ func postProcess(ctx *RenderContext, procs []processor, input io.Reader, output
_ , _ = res . WriteString ( "</body></html>" )
// parse the HTML
nodes , err := html . ParseFragment ( res , nil )
node , err := html . Parse ( res )
if err != nil {
return & postProcessError { "invalid HTML" , err }
}
for _ , node := range nodes {
visitNode ( ctx , procs , node , true )
if node . Type == html . DocumentNode {
node = node . FirstChild
}
newNodes := make ( [ ] * html . Node , 0 , len ( nodes ) )
visitNode ( ctx , procs , node , true )
for _ , node := range nodes {
if node . Data == "html" {
node = node . FirstChild
for node != nil && node . Data != "body" {
node = node . NextSibling
}
}
if node == nil {
continue
newNodes := make ( [ ] * html . Node , 0 , 5 )
if node . Data == "html" {
node = node . FirstChild
for node != nil && node . Data != "body" {
node = node . NextSibling
}
}
if node != nil {
if node . Data == "body" {
child := node . FirstChild
for child != nil {