aboutsummaryrefslogtreecommitdiff
path: root/lib/net/html/example_node_iterator_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net/html/example_node_iterator_test.go')
-rw-r--r--lib/net/html/example_node_iterator_test.go94
1 files changed, 94 insertions, 0 deletions
diff --git a/lib/net/html/example_node_iterator_test.go b/lib/net/html/example_node_iterator_test.go
new file mode 100644
index 00000000..b5e82db4
--- /dev/null
+++ b/lib/net/html/example_node_iterator_test.go
@@ -0,0 +1,94 @@
+// Copyright 2020, Shulhan <m.shulhan@gmail.com>. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package html
+
+import (
+ "fmt"
+ "log"
+ "strings"
+)
+
+func ExampleParse() {
+ rawHTML := `
+<ul>
+ <li>
+ <b>item</b>
+ <span>one</span>
+ </li>
+</ul>
+`
+
+ r := strings.NewReader(rawHTML)
+
+ iter, err := Parse(r)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ for node := iter.Next(); node != nil; node = iter.Next() {
+ if node.IsElement() {
+ fmt.Printf("%s\n", node.Data)
+ } else {
+ fmt.Printf("\t%s\n", node.Data)
+ }
+ }
+ //Output:
+ //html
+ //head
+ //body
+ //ul
+ //li
+ //b
+ // item
+ //b
+ //span
+ // one
+ //span
+ //li
+ //ul
+ //body
+ //html
+}
+
+func ExampleNodeIterator_Set() {
+ rawHTML := `
+<ul>
+ <li>
+ <b>item</b>
+ <span>one</span>
+ </li>
+</ul>
+<h2>Jump here</h2>
+`
+
+ r := strings.NewReader(rawHTML)
+
+ iter, err := Parse(r)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ for node := iter.Next(); node != nil; node = iter.Next() {
+ if node.IsElement() {
+ if node.Data == "ul" {
+ // Skip iterating the "ul" element.
+ iter.SetNext(node.GetNextSibling())
+ continue
+ }
+ fmt.Printf("%s\n", node.Data)
+ } else {
+ fmt.Printf("\t%s\n", node.Data)
+ }
+ }
+ //Output:
+ //html
+ //head
+ //body
+ //h2
+ // Jump here
+ //h2
+ //body
+ //html
+}