2017-07-15 21:49:08 +02:00
|
|
|
package treerack
|
2017-06-25 17:51:08 +02:00
|
|
|
|
|
|
|
import "fmt"
|
|
|
|
|
|
|
|
type Node struct {
|
2017-11-05 03:28:36 +01:00
|
|
|
Name string
|
|
|
|
Nodes []*Node
|
|
|
|
From, To int
|
|
|
|
tokens []rune
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|
|
|
|
|
2017-11-01 00:19:29 +01:00
|
|
|
func mapNodes(m func(n *Node) *Node, n []*Node) []*Node {
|
|
|
|
var nn []*Node
|
|
|
|
for i := range n {
|
|
|
|
nn = append(nn, m(n[i]))
|
|
|
|
}
|
|
|
|
|
|
|
|
return nn
|
|
|
|
}
|
|
|
|
|
|
|
|
func filterNodes(f func(n *Node) bool, n []*Node) []*Node {
|
|
|
|
var nn []*Node
|
|
|
|
for i := range n {
|
|
|
|
if f(n[i]) {
|
|
|
|
nn = append(nn, n[i])
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return nn
|
|
|
|
}
|
|
|
|
|
2017-06-25 17:51:08 +02:00
|
|
|
func (n *Node) String() string {
|
2017-06-26 01:21:46 +02:00
|
|
|
return fmt.Sprintf("%s:%d:%d:%s", n.Name, n.From, n.To, n.Text())
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
func (n *Node) Text() string {
|
2017-06-26 01:21:46 +02:00
|
|
|
return string(n.tokens[n.From:n.To])
|
2017-06-25 17:51:08 +02:00
|
|
|
}
|