summaryrefslogtreecommitdiff
path: root/reflect.go
diff options
context:
space:
mode:
Diffstat (limited to 'reflect.go')
-rw-r--r--reflect.go96
1 files changed, 96 insertions, 0 deletions
diff --git a/reflect.go b/reflect.go
new file mode 100644
index 0000000..783ecd0
--- /dev/null
+++ b/reflect.go
@@ -0,0 +1,96 @@
+package widget
+
+import (
+ "reflect"
+ "strconv"
+)
+
+func GetString(A any) string {
+ if A == nil {
+ // log.Warn("getString() got nil")
+ return ""
+ }
+ var k reflect.Kind
+ k = reflect.TypeOf(A).Kind()
+
+ switch k {
+ case reflect.Int:
+ var i int
+ i = A.(int)
+ return strconv.Itoa(i)
+ case reflect.String:
+ return A.(string)
+ case reflect.Bool:
+ if A.(bool) == true {
+ return "true"
+ } else {
+ return "false"
+ }
+ default:
+ // log.Warn("getString uknown kind", k, "value =", A)
+ return ""
+ }
+ return ""
+}
+
+// work like unix os.Exec() ? everything other than 0 is false
+func GetBool(A any) bool {
+ if A == nil {
+ // log.Warn("getBool() got nil")
+ return false
+ }
+ var k reflect.Kind
+ k = reflect.TypeOf(A).Kind()
+
+ switch k {
+ case reflect.Int:
+ var i int
+ i = A.(int)
+ if i == 0 {
+ return true
+ } else {
+ return false
+ }
+ case reflect.String:
+ if A.(string) == "true" {
+ return true
+ } else {
+ return false
+ }
+ case reflect.Bool:
+ return A.(bool)
+ default:
+ // log.Warn("getString uknown kind", k, "value =", A)
+ return false
+ }
+ return false
+}
+
+// work like unix? everything other than 0 is false
+func GetInt(A any) int {
+ if A == nil {
+ // log.Warn("getBool() got nil")
+ return -1
+ }
+ var k reflect.Kind
+ k = reflect.TypeOf(A).Kind()
+
+ switch k {
+ case reflect.Int:
+ return A.(int)
+ case reflect.String:
+ tmp := A.(string)
+ i, _ := strconv.Atoi(tmp)
+ return i
+ case reflect.Bool:
+ if A.(bool) {
+ return 0
+ } else {
+ return -1
+ }
+ default:
+ // log.Warn("getString uknown kind", k, "value =", A)
+ return -1
+ }
+ return -1
+}