diff options
Diffstat (limited to 'cmd/uptfs')
| -rw-r--r-- | cmd/uptfs/main.go | 60 |
1 files changed, 53 insertions, 7 deletions
diff --git a/cmd/uptfs/main.go b/cmd/uptfs/main.go index 7c18054..ff39ff6 100644 --- a/cmd/uptfs/main.go +++ b/cmd/uptfs/main.go @@ -4,6 +4,7 @@ import ( "bufio" "errors" "fmt" + "log/slog" "os" "path/filepath" "slices" @@ -16,6 +17,7 @@ import ( var args struct { ConfigFile string `arg:"-c" help:"path to config file" default:""` + Verbose bool `arg:"-v" help:"toggle verbose (debug) mode"` } func errExit(err error) { @@ -26,11 +28,18 @@ func errExit(err error) { func main() { arg.MustParse(&args) + if args.Verbose { + slog.SetLogLoggerLevel(slog.LevelDebug) + } + + slog.Debug("uptfs started") + var configFilePath string var err error if args.ConfigFile != "" { configFilePath, err = filepath.Abs(args.ConfigFile) + slog.Debug("config file path: " + configFilePath) } if err != nil { errExit(err) @@ -39,9 +48,11 @@ func main() { var config config.Config config.LoadConfig(configFilePath) + var inputString string scanner := bufio.NewScanner(os.Stdin) - scanner.Scan() - inputString := scanner.Text() + for scanner.Scan() { + inputString = inputString + scanner.Text() + } if inputString == "" { err := errors.New("the input string is empty") @@ -50,34 +61,67 @@ func main() { } additionalDelimeters := []string{",", ".", " "} + var delimeterString string + for _, element := range additionalDelimeters { + if element == " " { + element = "<space>" + } + delimeterString = delimeterString + element + " " + } + slog.Debug("delimeters: " + delimeterString) + tempword := "" var tokenlist token.LinkedTokenList for index, character := range inputString { + slog.Debug("current character: " + string(character)) if slices.Contains(additionalDelimeters, string(character)) { + slog.Debug("current character is a delimeter") if len(tempword) != 0 { + slog.Debug("word is longer than 0 characters, filtering it") for _, filterName := range config.Filters { - currentfilter := filter.FilterList[filterName]() - tempword = currentfilter.Filter(tempword) + _, ok := filter.FilterList[filterName] + if ok { + slog.Debug("using filter " + filterName) + currentfilter := filter.FilterList[filterName]() + tempword = currentfilter.Filter(tempword) + } else { + slog.Debug("there's no filter named " + filterName) + continue + } } + slog.Debug("filtered word: " + tempword) tokenlist.AddToken(tempword) + slog.Debug("adding delimeter") tokenlist.AddToken(string(character)) + slog.Debug("resetting current word to an empty string") tempword = "" continue } + slog.Debug("current word is a zero-length string") + slog.Debug("adding delimeter") tokenlist.AddToken(string(character)) tempword = "" continue } - + slog.Debug("current character is not a delimeter, adding to word") tempword = tempword + string(character) if index == len(inputString)-1 { + slog.Debug("string ended, filtering current word") for _, filterName := range config.Filters { - currentfilter := filter.FilterList[filterName]() - tempword = currentfilter.Filter(tempword) + _, ok := filter.FilterList[filterName] + if ok { + slog.Debug("using filter " + filterName) + currentfilter := filter.FilterList[filterName]() + tempword = currentfilter.Filter(tempword) + } else { + slog.Debug("there's no filter named " + filterName) + continue + } } + slog.Debug("filtered word: " + tempword) tokenlist.AddToken(tempword) tempword = "" } @@ -90,4 +134,6 @@ func main() { } fmt.Println(result) + + slog.Debug("uptfs finished") } |
