35 lines
640 B
Go
35 lines
640 B
Go
package arrclient
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"strconv"
|
||
|
|
"strings"
|
||
|
|
)
|
||
|
|
|
||
|
|
func BoolOption(options map[string]any, key string, fallback bool) bool {
|
||
|
|
value, ok := options[key]
|
||
|
|
if !ok {
|
||
|
|
return fallback
|
||
|
|
}
|
||
|
|
switch typed := value.(type) {
|
||
|
|
case bool:
|
||
|
|
return typed
|
||
|
|
case string:
|
||
|
|
parsed, err := strconv.ParseBool(strings.TrimSpace(typed))
|
||
|
|
if err == nil {
|
||
|
|
return parsed
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return fallback
|
||
|
|
}
|
||
|
|
|
||
|
|
func StringOption(options map[string]any, key, fallback string) string {
|
||
|
|
value, ok := options[key]
|
||
|
|
if !ok {
|
||
|
|
return fallback
|
||
|
|
}
|
||
|
|
if typed, ok := value.(string); ok && strings.TrimSpace(typed) != "" {
|
||
|
|
return strings.TrimSpace(typed)
|
||
|
|
}
|
||
|
|
return fallback
|
||
|
|
}
|