MCPcopy
hub / github.com/spf13/cast / toStringMapIntE

Function toStringMapIntE

map.go:141–195  ·  view source on GitHub ↗
(i any, fn func(any) T, fnE func(any) (T, error))

Source from the content-addressed store, hash-verified

139}
140
141func toStringMapIntE[T int | int64](i any, fn func(any) T, fnE func(any) (T, error)) (map[string]T, error) {
142 m := map[string]T{}
143
144 if i == nil {
145 return nil, fmt.Errorf(errorMsg, i, i, m)
146 }
147
148 switch v := i.(type) {
149 case map[string]T:
150 return v, nil
151
152 case map[string]any:
153 for k, val := range v {
154 m[k] = fn(val)
155 }
156
157 return m, nil
158
159 case map[any]T:
160 for k, val := range v {
161 m[ToString(k)] = val
162 }
163
164 return m, nil
165
166 case map[any]any:
167 for k, val := range v {
168 m[ToString(k)] = fn(val)
169 }
170
171 return m, nil
172
173 case string:
174 err := jsonStringToObject(v, &m)
175 return m, err
176 }
177
178 if reflect.TypeOf(i).Kind() != reflect.Map {
179 return m, fmt.Errorf(errorMsg, i, i, m)
180 }
181
182 mVal := reflect.ValueOf(m)
183 v := reflect.ValueOf(i)
184
185 for _, keyVal := range v.MapKeys() {
186 val, err := fnE(v.MapIndex(keyVal).Interface())
187 if err != nil {
188 return m, fmt.Errorf(errorMsg, i, i, m)
189 }
190
191 mVal.SetMapIndex(keyVal, reflect.ValueOf(val))
192 }
193
194 return m, nil
195}
196
197// ToStringMapIntE casts any value to a map[string]int type.
198func ToStringMapIntE(i any) (map[string]int, error) {

Callers 2

ToStringMapIntEFunction · 0.85
ToStringMapInt64EFunction · 0.85

Calls 2

ToStringFunction · 0.85
jsonStringToObjectFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…