Files
dirmd/internal/tree/tree.go
T
2026-09-15 11:16:27 +01:00

37 lines
760 B
Go

package tree
type Node struct {
Name string
IsDir bool
Children map[string]*Node
Annotation string
Ref string
}
func splitPath(relPath string) []string {
var parts []string
start := 0
for i := 0; i <= len(relPath); i++ {
if i == len(relPath) || relPath[i] == '/' || relPath[i] == '\\' {
if i > start {
parts = append(parts, relPath[start:i])
}
start = i + 1
}
}
return parts
}
func addPath(root *Node, rel string, isDir bool) *Node {
parts := splitPath(rel)
cur := root
for i, part := range parts {
if _, ok := cur.Children[part]; !ok {
cur.Children[part] = &Node{Name: part, IsDir: i < len(parts)-1, Children: make(map[string]*Node)}
}
cur = cur.Children[part]
}
cur.IsDir = isDir
return cur
}