From e730418289d80985c5d48946353961a357a4b532 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Wed, 6 Mar 2024 03:42:00 +0700 Subject: lib: move package "net/html" to "lib/html" Putting "html" under "net" package make no sense. Another reason is to make the package flat under "lib/" directory. --- lib/html/example_node_iterator_test.go | 96 ++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 lib/html/example_node_iterator_test.go (limited to 'lib/html/example_node_iterator_test.go') diff --git a/lib/html/example_node_iterator_test.go b/lib/html/example_node_iterator_test.go new file mode 100644 index 00000000..94ece050 --- /dev/null +++ b/lib/html/example_node_iterator_test.go @@ -0,0 +1,96 @@ +// Copyright 2020, Shulhan . 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 := ` + +` + + 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_SetNext() { + rawHTML := ` + +

Jump here

+` + + 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 +} -- cgit v1.3