diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2024-05-23 13:47:06 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2024-05-23 13:47:06 -0400 |
| commit | f3a84599a7034c2e746b952cd4bc9aa5967e4083 (patch) | |
| tree | 5d40e0ed9484a471aaadfbc046ae924c19789c01 /parse.go | |
| parent | 9eab2215c7bb8dbe017987078497fa6c7d8943c3 (diff) | |
Refactoring Project
Diffstat (limited to 'parse.go')
| -rwxr-xr-x | parse.go | 51 |
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 +} |
