shithub: hell

Download patch

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
--