bbash/input_parser/auto_complete.go
2025-01-13 17:46:40 +01:00

84 lines
1.2 KiB
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 prevInput == input {
tabIndex = tabIndex + 1
if len(commandsTab) == 0 && tabIndex > 0 {
return input
}
if tabIndex > len(commandsTab)-1 {
tabIndex = 0
}
prevInput = commandsTab[tabIndex]
return commandsTab[tabIndex]
}
prevInput = input
tabIndex = 0
currentCommands := []string{
"cat",
"cd",
"cp",
"echo",
"exit",
"fritiofcommand",
"head",
"help",
"ls",
"man",
"mv",
"pwd",
"rm",
"tail",
"touch",
"whereareyou",
}
var commandsWorking []string
// println(commandsWorking)
for _, currentCommand := range currentCommands {
// println("currentCommand")
// println(currentCommand)
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]
}