diff options
| author | ayyansea <ayyansea@gmail.com> | 2024-11-18 21:53:29 +0300 |
|---|---|---|
| committer | ayyansea <ayyansea@gmail.com> | 2024-11-18 21:53:29 +0300 |
| commit | 574e76ae935c4931ec50b14a94dee930ed6f3d5a (patch) | |
| tree | a289a98536930cd90a0d8e7e05420f3a35934923 /cmd/uptfs/main.go | |
| parent | d741a3187f0e8abb00ee34356b3e61ab9087c0d9 (diff) | |
feat: restructure project + add a basic cli arg parser
Diffstat (limited to 'cmd/uptfs/main.go')
| -rw-r--r-- | cmd/uptfs/main.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/cmd/uptfs/main.go b/cmd/uptfs/main.go new file mode 100644 index 0000000..4ecb045 --- /dev/null +++ b/cmd/uptfs/main.go @@ -0,0 +1,60 @@ +package main + +import ( + "bufio" + "errors" + "fmt" + "os" + "strings" + + "github.com/alexflint/go-arg" + "github.com/ayyansea/uptfs/internal/filter" + "github.com/ayyansea/uptfs/internal/split" + "github.com/ayyansea/uptfs/internal/token" +) + +var args struct { + Foo string `help:"it's a foo"` + Bar bool `help:"it's a bar"` +} + +func main() { + arg.MustParse(&args) + fmt.Println(args.Foo, args.Bar) + + scanner := bufio.NewScanner(os.Stdin) + scanner.Scan() + inputString := scanner.Text() + + if inputString == "" { + err := errors.New("the input string is empty") + fmt.Printf("%v\n", err) + os.Exit(1) + } + + additionalDelimeters := []string{",", "."} + tokens := strings.Split(inputString, " ") + tokens = split.FormatInput(tokens, additionalDelimeters) + + if len(tokens) == 0 { + err := errors.New("the slice is empty") + fmt.Printf("%v\n", err) + os.Exit(1) + } + + var linkedTokens token.LinkedTokenList + token.SliceToLinkedTokenSlice(tokens, &linkedTokens) + + lowercaseFilter := filter.NewLowercaseFilterWithExtraSteps() + uppercaseFilter := filter.NewUppercaseFilter() + + for current := linkedTokens.GetHead(); current != nil; current = current.GetNextToken() { + current.SetContent(lowercaseFilter.Filter(current.GetContent())) + current.SetContent(uppercaseFilter.Filter(current.GetContent())) + } + + head := linkedTokens.GetHead() + tail := linkedTokens.GetTail() + fmt.Println("Head: ", head.GetContent()) + fmt.Println("Tail: ", tail.GetContent()) +} |
