github.com/aarzilli/tools@v0.0.0-20151123112009-0d27094f75e0/net/http/dedup/10_textify_brute_force.go (about)

     1  package dedup
     2  
     3  import (
     4  	"github.com/pbberlin/tools/net/http/dom"
     5  	"github.com/pbberlin/tools/stringspb"
     6  	"golang.org/x/net/html"
     7  )
     8  
     9  func textifyBruteForce(n *html.Node) {
    10  
    11  	cc := []*html.Node{}
    12  	for c := n.FirstChild; c != nil; c = c.NextSibling {
    13  		cc = append(cc, c)
    14  	}
    15  	for _, c := range cc {
    16  		textifyBruteForce(c)
    17  	}
    18  
    19  	textifyNodeSubtree(n)
    20  
    21  }
    22  
    23  func textifyNodeSubtree(n *html.Node) {
    24  
    25  	if n.Type == html.ElementNode {
    26  
    27  		nd := dom.Nd("text")
    28  		nd.Data = textifySubtreeBruteForce(n, 0)
    29  		nd.Data = stringspb.NormalizeInnerWhitespace(nd.Data)
    30  
    31  		cc := []*html.Node{}
    32  		for c := n.FirstChild; c != nil; c = c.NextSibling {
    33  			cc = append(cc, c)
    34  		}
    35  		for _, c := range cc {
    36  			n.RemoveChild(c)
    37  		}
    38  
    39  		n.AppendChild(nd)
    40  
    41  		nd2 := dom.Nd("br")
    42  		dom.InsertAfter(n, nd2)
    43  
    44  	}
    45  
    46  }