ref: fc9854d5225f65a8dade6efba46da532952d33a5
parent: 1389447da976e939392467abbf3420fc14851f15
author: penny <penny@limitedideas.org>
date: Tue Aug 19 16:42:28 EDT 2025
Write my own parser for parameters
--- a/commands.go
+++ b/commands.go
@@ -2,8 +2,6 @@
import (
"strings"
-
- "github.com/google/shlex"
)
var commands = []string{"examine", "reply", "like", "thread", "open", "preview", "download", "dm", "rt", "parent", "children", "rm", "mark", "unmark", "account", "vim", "import", "pause", "resume", "url", "fpost", "ufpost"}@@ -39,18 +37,52 @@
return
}
-func extractInputParameters(input string) (remainder string, parameters [][]string) {- args, _ := shlex.Split(input)
-
- for i, arg := range args {- if strings.HasPrefix(arg, "?") {- key, val, _ := strings.Cut(arg, "=")
- key = key[1:]
- parameters = append(parameters, []string{key, val})+func pullParameter(input string) (parameter string, remainder string) {+ if strings.HasPrefix(input, "?") {+ parameter, _, _ = strings.Cut(input, " ")
+ if(len(parameter) == len(input)) {+ remainder = ""
+ parameter = input
} else {- remainder = strings.Join(args[i:], " ")
- break
+ remainder = input[len(parameter)+1:]
}
+ } else {+ return "", input
}
+
+ prefix, _, cut := strings.Cut(parameter, "\"")
+
+ if cut {+ quote, _, _ := strings.Cut(input[len(prefix)+1:], "\"")
+ parameter = prefix + quote
+ if len(parameter)+3 <= len(input) {+ remainder = input[len(parameter)+3:]
+ } else {+ remainder = input[len(parameter)+2:]
+ }
+ }
+ return
+}
+
+func splitParameter(input string) (parameter []string) {+ if(len(input) < 2) {+ //nothing here
+ return nil
+ }
+ input = input[1:]
+ key, value, _ := strings.Cut(input, "=")
+ return []string {key, value}+}
+
+func extractInputParameters(input string) (remainder string, parameters [][]string) {+
+ parameter := " "
+ remainder = input
+ for parameter != "" {+ parameter, remainder = pullParameter(remainder)
+ if parameter != " " && parameter != "" {+ parameters = append(parameters, splitParameter(parameter))
+ }
+ }
return
}
binary files /dev/null b/hell differ
--
⑨