vendor/github.com/spf13/viper/util.go
changeset 262 8d3354485fc3
parent 260 445e01aede7e
equal deleted inserted replaced
261:270cc4dda0c5 262:8d3354485fc3
    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)