bbash/input_parser/auto_complete.go

71 lines
1017 B
Go

package input_parser
var commandsTab []string
var prevInput string
var tabIndex int
func AutoComplete(input string) string {
inputLength := len(input)
if inputLength == 0 {
return input
}
if tabIndex+2 > len(commandsTab) {
tabIndex = -1
}
if prevInput == input {
tabIndex = tabIndex + 1
prevInput = commandsTab[tabIndex]
return commandsTab[tabIndex]
}
prevInput = input
tabIndex = 0
currentCommands := []string{
"cat",
"cd",
"cp",
"echo",
"head",
"help",
"ls",
"man",
"mv",
"pwd",
"rm",
"tail",
"touch",
}
var commandsWorking []string
for _, currentCommand := range currentCommands {
if len(currentCommand) < inputLength {
continue
}
currentCommandWithoutEnd := currentCommand[:inputLength]
if currentCommandWithoutEnd != input {
continue
}
commandsWorking = append(commandsWorking, currentCommand)
}
commandsTab = commandsWorking
if len(commandsTab) == 0 {
return input
}
prevInput = commandsTab[0]
return commandsTab[0]
}