Newer
Older
package util
import (
"fmt"
"github.com/openconfig/goyang/pkg/yang"
)
type PathElement struct {
Children []*PathElement
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 NewPaths() Paths {
return make(map[string]*PathElement)
}
type Paths map[string]*PathElement
func (p Paths) processEntry(e *yang.Entry) *PathElement {
if e.Dir != nil {
elem := &PathElement{
Children: make([]*PathElement, len(e.Dir)),
Name: e.Name,
}
i := 0
for _,v := range e.Dir {
i++
}
p[e.Name] = elem
return elem
}
leaf := &PathElement{
Name: e.Name,
}
return leaf
}
func (p Paths) ParseSchema(schema *ytypes.Schema, root string) error {
tree := schema.SchemaTree
for _,v := range tree {
if v.Parent != nil {
if v.Parent.Name == root {
p.processEntry(v)
}
}
}
return nil