62 } |
62 } |
63 |
63 |
64 return nm |
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 func insensitiviseMap(m map[string]interface{}) { |
83 func insensitiviseMap(m map[string]interface{}) { |
68 for key, val := range m { |
84 for key, val := range m { |
69 switch val.(type) { |
85 val = insensitiviseVal(val) |
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 |
|
79 lower := strings.ToLower(key) |
86 lower := strings.ToLower(key) |
80 if key != lower { |
87 if key != lower { |
81 // remove old key (not lower-cased) |
88 // remove old key (not lower-cased) |
82 delete(m, key) |
89 delete(m, key) |
83 } |
90 } |
84 // update map |
91 // update map |
85 m[lower] = val |
92 m[lower] = val |
|
93 } |
|
94 } |
|
95 |
|
96 func insensitiveArray(a []interface{}) { |
|
97 for i, val := range a { |
|
98 a[i] = insensitiviseVal(val) |
86 } |
99 } |
87 } |
100 } |
88 |
101 |
89 func absPathify(logger Logger, inPath string) string { |
102 func absPathify(logger Logger, inPath string) string { |
90 logger.Info("trying to resolve absolute path", "path", inPath) |
103 logger.Info("trying to resolve absolute path", "path", inPath) |