33 lines
673 B
Go
33 lines
673 B
Go
package pqutil
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
// ParseBool is like strconv.ParseBool, but also accepts "yes"/"no" and
|
|
// "on"/"off".
|
|
func ParseBool(str string) (bool, error) {
|
|
switch str {
|
|
case "1", "t", "T", "true", "TRUE", "True", "yes", "on":
|
|
return true, nil
|
|
case "0", "f", "F", "false", "FALSE", "False", "no", "off":
|
|
return false, nil
|
|
}
|
|
return false, &strconv.NumError{Func: "ParseBool", Num: str, Err: strconv.ErrSyntax}
|
|
}
|
|
|
|
func Join[S ~[]E, E ~string](s S) string {
|
|
var b strings.Builder
|
|
for i := range s {
|
|
if i > 0 {
|
|
b.WriteString(", ")
|
|
}
|
|
if i == len(s)-1 {
|
|
b.WriteString("or ")
|
|
}
|
|
b.WriteString(string(s[i]))
|
|
}
|
|
return b.String()
|
|
}
|