package main import ( "fmt" "git.swzry.com/zry/go-hhc-cli/hhc_ast" "git.swzry.com/zry/go-hhc-cli/hhc_common" "github.com/cheynewallace/tabby" ) func PrintHelp(h []hhc_common.SDTHelpInfo) { t := tabby.New() for i, v := range h { t.AddLine(i, v.IsArg, v.Name, v.Description) } t.Print() } func main() { tree := maketree() if tree == nil { fmt.Println("Failed Make Test Tree") return } walker := hhc_ast.NewSDTWalker(tree) TypeAndHelp(walker, "") TypeAndHelp(walker, "i") TypeAndHelp(walker, "ip") WalkIn(walker, "ip") TypeAndHelp(walker, "m") WalkIn(walker, "mtu") WalkBack(walker) TypeAndHelp(walker, "a") WalkIn(walker, "addr") TypeAndHelp(walker, "192.") TypeAndHelp(walker, "192.168") WalkIn(walker, "192.168.114.114") TypeAndHelp(walker, "") TypeAndHelp(walker, "255.") TypeAndHelp(walker, "255.255") WalkIn(walker, "255.255.255.0") TypeAndHelp(walker, "") WalkBack(walker) TypeAndHelp(walker, "24") WalkIn(walker, "24") WalkIn(walker, "sub") TypeAndHelp(walker, "") TypeAndHelp(walker, "test") WalkIn(walker, "test1") WalkIn(walker, "test2") WalkIn(walker, "test3") WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) TypeAndHelp(walker, "") TypeAndHelp(walker, "dh") WalkIn(walker, "dh") WalkBack(walker) TypeAndHelp(walker, "") WalkIn(walker, "u") WalkIn(walker, "int") WalkIn(walker, "vl") WalkIn(walker, "1000") WalkBack(walker) WalkBack(walker) WalkIn(walker, "lo") WalkIn(walker, "9") WalkBack(walker) WalkIn(walker, "6") WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkBack(walker) WalkIn(walker, "ipv") } func TypeAndHelp(walker *hhc_ast.SDTWalker, token string) { println("[H9C]" + CtxToCommand(walker.GetContext()) + token + "?") if walker.HasError() { println(" % " + walker.GetError().FES()) return } PrintHelp(walker.GetHelps(token)) } func WalkIn(walker *hhc_ast.SDTWalker, token string) { walker.NextStep(token) println("[H9C]" + CtxToCommand(walker.GetContext()) + " ?") if walker.HasError() { println(" % " + walker.GetError().FES()) return } PrintHelp(walker.GetHelps("")) } func WalkBack(walker *hhc_ast.SDTWalker) { walker.Back() println("[H9C]" + CtxToCommand(walker.GetContext()) + " ?") if walker.HasError() { println(" % " + walker.GetError().FES()) return } PrintHelp(walker.GetHelps("")) }