Just Tree Notation support in Go
https://treenotation.org/
testdata | ||
doc.go | ||
go.mod | ||
go.sum | ||
LICENSE.md | ||
README.md | ||
tree.go | ||
tree_test.go |
tree
The fast and simple Tree Notation parser.
Clean and unfiltered Go with single memory allocation and without any 3rd party
dependencies.
Usage
package main
import (
"fmt"
"log"
"os"
"path/filepath"
"source.toby3d.me/toby3d/tree"
)
func main() {
// For example, load tree content from file.
file, err := os.Open(filepath.Join(".", "html.example"))
if err != nil {
log.Fatalf("cannot open file: %v", err)
}
defer file.Close()
// Parse file contents from plain Tree Notation into *tree.Node with
// *tree.Node childrens.
node := tree.Parse(file)
fmt.Printf("%#v", node)
// Output:
// html
// body
// div おはようございます
}
See package documentation and another examples
on pkg.go.dev.
Benchmark
$ GOMAXPROCS=1 go test -bench=Parse -benchmem -benchtime=10s
goos: linux
goarch: amd64
pkg: source.toby3d.me/toby3d/tree
cpu: 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
BenchmarkParse 37139248 316.9 ns/op 4096 B/op 1 allocs/op
License
See LICENSE.md
Contact
Check my website or just drop email.