summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
diff options
context:
space:
mode:
authorLibravatar kim <89579420+NyaaaWhatsUpDoc@users.noreply.github.com>2024-10-25 16:09:18 +0000
committerLibravatar GitHub <noreply@github.com>2024-10-25 16:09:18 +0000
commit51cb6cae166388110388b128953cd01c781660d8 (patch)
tree5526ecd37d1d60a3394b8a796191407c8cf093c5 /vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
parent[bugfix] incorrect /api/v_/instance domain uri fields (#3477) (diff)
downloadgotosocial-51cb6cae166388110388b128953cd01c781660d8.tar.xz
update go-sqlite3 => v0.20.0 (#3483)
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
new file mode 100644
index 000000000..3e8c728b0
--- /dev/null
+++ b/vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go
@@ -0,0 +1,65 @@
+package sql3util
+
+import "strings"
+
+// NamedArg splits an named arg into a key and value,
+// around an equals sign.
+// Spaces are trimmed around both key and value.
+func NamedArg(arg string) (key, val string) {
+ key, val, _ = strings.Cut(arg, "=")
+ key = strings.TrimSpace(key)
+ val = strings.TrimSpace(val)
+ return
+}
+
+// Unquote unquotes a string.
+//
+// https://sqlite.org/lang_keywords.html
+func Unquote(val string) string {
+ if len(val) < 2 {
+ return val
+ }
+ fst := val[0]
+ lst := val[len(val)-1]
+ rst := val[1 : len(val)-1]
+ if fst == '[' && lst == ']' {
+ return rst
+ }
+ if fst != lst {
+ return val
+ }
+ var old, new string
+ switch fst {
+ default:
+ return val
+ case '`':
+ old, new = "``", "`"
+ case '"':
+ old, new = `""`, `"`
+ case '\'':
+ old, new = `''`, `'`
+ }
+ return strings.ReplaceAll(rst, old, new)
+}
+
+// ParseBool parses a boolean.
+//
+// https://sqlite.org/pragma.html#syntax
+func ParseBool(s string) (b, ok bool) {
+ if len(s) == 0 {
+ return false, false
+ }
+ if s[0] == '0' {
+ return false, true
+ }
+ if '1' <= s[0] && s[0] <= '9' {
+ return true, true
+ }
+ switch strings.ToLower(s) {
+ case "true", "yes", "on":
+ return true, true
+ case "false", "no", "off":
+ return false, true
+ }
+ return false, false
+}