Parcourir la source

Add ToStringMapBool

ToStringMapBool is useful for a map of flags in a configuration file.
tags/v1.0.0
bep il y a 9 ans
Parent
révision
bbe2d4b35d
3 fichiers modifiés avec 32 ajouts et 1 suppressions
  1. +5
    -0
      cast.go
  2. +3
    -1
      cast_test.go
  3. +24
    -0
      caste.go

+ 5
- 0
cast.go Voir le fichier

@@ -37,6 +37,11 @@ func ToStringMapString(i interface{}) map[string]string {
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


+ 3
- 1
cast_test.go Voir le fichier

@@ -40,7 +40,9 @@ func TestToString(t *testing.T) {

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) {
@@ -53,7 +55,7 @@ func TestToBool(t *testing.T) {
assert.Equal(t, ToBool("F"), false)
assert.Equal(t, ToBool(false), false)
assert.Equal(t, ToBool("foo"), false)
assert.Equal(t, ToBool("true"), true)
assert.Equal(t, ToBool("TRUE"), true)
assert.Equal(t, ToBool("True"), true)


+ 24
- 0
caste.go Voir le fichier

@@ -161,6 +161,30 @@ func ToStringMapStringE(i interface{}) (map[string]string, error) {
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))



Chargement…
Annuler
Enregistrer