diff --git a/cmd/path-traversal/path_traversal.go b/cmd/path-traversal/path_traversal.go index ede0a2137c9484d25839a89b5b7f6e42c232fefd..9952b95896c93721134b7ea829fcf60693140fba 100644 --- a/cmd/path-traversal/path_traversal.go +++ b/cmd/path-traversal/path_traversal.go @@ -11,6 +11,22 @@ type PathElement struct { Name string } +func (p *PathElement)Print() { + printPE(0, p) +} + +func printPE(indent int, pe *PathElement) { + for i := 0; i < indent; i++ { + fmt.Print(" ") + } + fmt.Println(pe.Name) + if len(pe.Children) > 0 { + for _,p := range pe.Children { + printPE(indent+1, p) + } + } +} + func main() { tree := schema.SchemaTree paths := make(map[string]*PathElement) @@ -18,11 +34,12 @@ func main() { for k,v := range tree { if v.Parent != nil { if v.Parent.Name == "device" { - paths[k] = processEntry(v) + pathElement := processEntry(v) + pathElement.Print() + paths[k] = pathElement } } } - fmt.Println("stop") } func processEntry(e *yang.Entry) *PathElement { @@ -31,9 +48,10 @@ func processEntry(e *yang.Entry) *PathElement { Children: make([]*PathElement, len(e.Dir)), Name: e.Name, } + i := 0 for _,v := range e.Dir { - child := processEntry(v) - elem.Children = append(elem.Children, child) + elem.Children[i] = processEntry(v) + i++ } return elem }