Merge pull request #5 from txgruppi/master
Updated to return bool false only for zero
diff --git a/cast.go b/cast.go
index dee6787..9c607fa 100644
--- a/cast.go
+++ b/cast.go
@@ -37,6 +37,11 @@
return v
}
+func ToStringMapBool(i interface{}) map[string]bool {
+ v, _ := ToStringMapBoolE(i)
+ return v
+}
+
func ToStringMap(i interface{}) map[string]interface{} {
v, _ := ToStringMapE(i)
return v
diff --git a/cast_test.go b/cast_test.go
index 2b3761b..a7ab1a8 100644
--- a/cast_test.go
+++ b/cast_test.go
@@ -40,7 +40,9 @@
func TestMaps(t *testing.T) {
var taxonomies = map[interface{}]interface{}{"tag": "tags", "group": "groups"}
+ var stringMapBool = map[interface{}]interface{}{"v1": true, "v2": false}
assert.Equal(t, ToStringMap(taxonomies), map[string]interface{}{"tag": "tags", "group": "groups"})
+ assert.Equal(t, ToStringMapBool(stringMapBool), map[string]bool{"v1": true, "v2": false})
}
func TestToBool(t *testing.T) {
diff --git a/caste.go b/caste.go
index 4cec35f..9f5916a 100644
--- a/caste.go
+++ b/caste.go
@@ -161,6 +161,30 @@
return m, fmt.Errorf("Unable to Cast %#v to map[string]string", i)
}
+func ToStringMapBoolE(i interface{}) (map[string]bool, error) {
+ jww.DEBUG.Println("ToStringMapBoolE called on type:", reflect.TypeOf(i))
+
+ var m = map[string]bool{}
+
+ switch v := i.(type) {
+ case map[interface{}]interface{}:
+ for k, val := range v {
+ m[ToString(k)] = ToBool(val)
+ }
+ return m, nil
+ case map[string]interface{}:
+ for k, val := range v {
+ m[ToString(k)] = ToBool(val)
+ }
+ return m, nil
+ case map[string]bool:
+ return v, nil
+ default:
+ return m, fmt.Errorf("Unable to Cast %#v to map[string]bool", i)
+ }
+ return m, fmt.Errorf("Unable to Cast %#v to map[string]bool", i)
+}
+
func ToStringMapE(i interface{}) (map[string]interface{}, error) {
jww.DEBUG.Println("ToStringMapE called on type:", reflect.TypeOf(i))