mirror of https://github.com/hashicorp/terraform
parent
cb52983c84
commit
16485ba3ca
@ -0,0 +1,28 @@
|
||||
package flatmap
|
||||
|
||||
import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Map is a wrapper around map[string]string that provides some helpers
|
||||
// above it that assume the map is in the format that flatmap expects
|
||||
// (the result of Flatten).
|
||||
//
|
||||
// All modifying functions such as Delete are done in-place unless
|
||||
// otherwise noted.
|
||||
type Map map[string]string
|
||||
|
||||
// Delete deletes a key out of the map with the given prefix.
|
||||
func (m Map) Delete(prefix string) {
|
||||
for k, _ := range m {
|
||||
match := k == prefix
|
||||
if !match && !strings.HasPrefix(k, prefix) {
|
||||
continue
|
||||
}
|
||||
if k[len(prefix):len(prefix)+1] != "." {
|
||||
continue
|
||||
}
|
||||
|
||||
delete(m, k)
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,24 @@
|
||||
package flatmap
|
||||
|
||||
import (
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMapDelete(t *testing.T) {
|
||||
m := Flatten(map[string]interface{}{
|
||||
"foo": "bar",
|
||||
"routes": []map[string]string{
|
||||
map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
m.Delete("routes")
|
||||
|
||||
expected := Map(map[string]string{"foo": "bar"})
|
||||
if !reflect.DeepEqual(m, expected) {
|
||||
t.Fatalf("bad: %#v", m)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue