mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-04 09:32:25 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			65 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |