VOL-1552 - inital stub
remove extra file
Change-Id: I9f5c93eefbde51c64a7c1b13244eca3a16de8a41
diff --git a/cli/util/menuProcessor.go b/cli/util/menuProcessor.go
new file mode 100644
index 0000000..c9ba837
--- /dev/null
+++ b/cli/util/menuProcessor.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2018-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+*/
+
+package util
+
+import (
+ "fmt"
+ "os"
+)
+
+/*
+ProcessTable parses table structure and executes functions
+*/
+func ProcessTable(functionTable map[string]func(bool), inputPrompt string) {
+ keys := []string{}
+ for k := range functionTable {
+ keys = append(keys, k)
+ }
+ var b = make([]byte, 1)
+ input := ""
+ fmt.Print(inputPrompt)
+ for {
+ os.Stdin.Read(b)
+ char := string(b)
+ if char == "\t" || char == "\n" || char == "?" {
+ fmt.Println("")
+ ret, prompt := Test(input, keys)
+ if len(ret) == 1 {
+ input = ret[0]
+ if input == "exit" {
+ return
+ }
+ if char == "\n" {
+ Route(input, functionTable, true)
+ } else {
+ Route(input, functionTable, false)
+ }
+ input = ""
+ fmt.Print(inputPrompt)
+ } else if len(ret) == 0 {
+ input = ""
+ fmt.Println("\nInvalid Input ")
+ fmt.Print(inputPrompt)
+ } else if len(ret) == 0 {
+ } else {
+
+ fmt.Println(ret)
+ input = prompt
+ fmt.Print(inputPrompt)
+ fmt.Print(prompt)
+ }
+ } else if char == " " {
+ _, ok := functionTable[input]
+ if ok {
+ Route(input, functionTable, false)
+ fmt.Print(inputPrompt)
+ input = ""
+ } else {
+ ret, prompt := Test(input, keys)
+ if len(ret) == 1 {
+ input = ret[0]
+ Route(input, functionTable, false)
+ input = ""
+ fmt.Print(inputPrompt)
+ } else if len(ret) == 0 {
+ input = ""
+ fmt.Println("\nInvalid Input ")
+ fmt.Print(inputPrompt)
+ } else {
+
+ fmt.Println(ret)
+ input = prompt
+ fmt.Print(inputPrompt + input)
+ }
+ }
+
+ } else if b[0] == 127 || char == "\b" {
+ sz := len(input)
+
+ if sz > 0 {
+ fmt.Print("\b \b")
+ input = input[:sz-1]
+ }
+ } else {
+ fmt.Print(char)
+ input += char
+ }
+ }
+}