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 }