@@ -64,18 +64,25 @@ func copyAndInsensitiviseMap(m map[string]interface{}) map[string]interface{} {
64
64
return nm
65
65
}
66
66
67
+ func insensitiviseVal (val interface {}) interface {} {
68
+ switch val .(type ) {
69
+ case map [interface {}]interface {}:
70
+ // nested map: cast and recursively insensitivise
71
+ val = cast .ToStringMap (val )
72
+ insensitiviseMap (val .(map [string ]interface {}))
73
+ case map [string ]interface {}:
74
+ // nested map: recursively insensitivise
75
+ insensitiviseMap (val .(map [string ]interface {}))
76
+ case []interface {}:
77
+ // nested array: recursively insensitivise
78
+ insensitiveArray (val .([]interface {}))
79
+ }
80
+ return val
81
+ }
82
+
67
83
func insensitiviseMap (m map [string ]interface {}) {
68
84
for key , val := range m {
69
- switch val .(type ) {
70
- case map [interface {}]interface {}:
71
- // nested map: cast and recursively insensitivise
72
- val = cast .ToStringMap (val )
73
- insensitiviseMap (val .(map [string ]interface {}))
74
- case map [string ]interface {}:
75
- // nested map: recursively insensitivise
76
- insensitiviseMap (val .(map [string ]interface {}))
77
- }
78
-
85
+ val = insensitiviseVal (val )
79
86
lower := strings .ToLower (key )
80
87
if key != lower {
81
88
// remove old key (not lower-cased)
@@ -86,6 +93,12 @@ func insensitiviseMap(m map[string]interface{}) {
86
93
}
87
94
}
88
95
96
+ func insensitiveArray (a []interface {}) {
97
+ for _ , val := range a {
98
+ insensitiviseVal (val )
99
+ }
100
+ }
101
+
89
102
func absPathify (logger Logger , inPath string ) string {
90
103
logger .Info ("trying to resolve absolute path" , "path" , inPath )
91
104
0 commit comments