summaryrefslogtreecommitdiff
path: root/parse.go
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2024-05-23 13:47:06 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2024-05-23 13:47:06 -0400
commitf3a84599a7034c2e746b952cd4bc9aa5967e4083 (patch)
tree5d40e0ed9484a471aaadfbc046ae924c19789c01 /parse.go
parent9eab2215c7bb8dbe017987078497fa6c7d8943c3 (diff)
Refactoring Project
Diffstat (limited to 'parse.go')
-rwxr-xr-xparse.go51
1 files changed, 51 insertions, 0 deletions
diff --git a/parse.go b/parse.go
new file mode 100755
index 0000000..da0c47e
--- /dev/null
+++ b/parse.go
@@ -0,0 +1,51 @@
+package main
+
+import (
+ "regexp"
+ "strings"
+)
+
+func Parse(s string) ([]string, error) {
+ comments, err := regexp.Compile("#.*")
+ if err != nil {
+ panic(err)
+ }
+
+ edgeWs, err := regexp.Compile("(^\\s+|\\s+$)+")
+ if err != nil {
+ return nil, err
+ }
+
+ whiteSpace, err := regexp.Compile("\\s+")
+ if err != nil {
+ return nil, err
+ }
+
+ repeatComma, err := regexp.Compile(",{2,}")
+ if err != nil {
+ return nil, err
+ }
+
+ userStrings, err := regexp.Compile("\"([[:graph:]]|\\s)+\"")
+ if err != nil {
+ return nil, err
+ }
+
+ placeHolder := "__PLACE_HOLDER__"
+ phReg, err := regexp.Compile(placeHolder)
+ if err != nil {
+ return nil, err
+ }
+
+ us := userStrings.FindString(s)
+ s = userStrings.ReplaceAllString(s, placeHolder)
+ s = comments.ReplaceAllString(s, "")
+ s = edgeWs.ReplaceAllString(s, "")
+ s = whiteSpace.ReplaceAllString(s, ",")
+ s = repeatComma.ReplaceAllString(s, ",")
+ res := strings.Split(s, ",")
+ for i, arg := range res {
+ res[i] = phReg.ReplaceAllString(arg, us)
+ }
+ return res, nil
+}