diff options
author | 2024-10-25 16:09:18 +0000 | |
---|---|---|
committer | 2024-10-25 16:09:18 +0000 | |
commit | 51cb6cae166388110388b128953cd01c781660d8 (patch) | |
tree | 5526ecd37d1d60a3394b8a796191407c8cf093c5 /vendor/github.com/ncruces/go-sqlite3/util/sql3util/arg.go | |
parent | [bugfix] incorrect /api/v_/instance domain uri fields (#3477) (diff) | |
download | gotosocial-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.go | 65 |
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 +} |