summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorayyansea <ayyansea@gmail.com>2024-11-28 22:29:57 +0300
committerayyansea <ayyansea@gmail.com>2024-11-28 22:29:57 +0300
commit27489dc5043fbd04c628e62d4df9a98cb53d8b06 (patch)
treece9e4f7db8eb5427f2cd43bad21ccc0c0cd6575e /cmd
parentcf0e34e39f79941d2a0009bda69d6de2eb9b8771 (diff)
feat: add debug logs + check for non-existent filters + half-assed multiline string reading
Diffstat (limited to 'cmd')
-rw-r--r--cmd/uptfs/main.go60
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")
}