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

Function toUnsignedNumberE

number.go:278–347  ·  view source on GitHub ↗
(i any, parseFn func(string) (T, error))

Source from the content-addressed store, hash-verified

276}
277
278func toUnsignedNumberE[T Number](i any, parseFn func(string) (T, error)) (T, error) {
279 n, valid, ok := toUnsignedNumber[T](i)
280 if ok {
281 return n, nil
282 }
283
284 i, _ = indirect(i)
285
286 if !valid {
287 return 0, errNegativeNotAllowed
288 }
289
290 switch s := i.(type) {
291 case string:
292 if s == "" {
293 return 0, nil
294 }
295
296 v, err := parseFn(s)
297 if err != nil {
298 return 0, fmt.Errorf(errorMsgWith, i, i, n, err)
299 }
300
301 return v, nil
302 case json.Number:
303 if s == "" {
304 return 0, nil
305 }
306
307 v, err := parseFn(string(s))
308 if err != nil {
309 return 0, fmt.Errorf(errorMsgWith, i, i, n, err)
310 }
311
312 return v, nil
313 case float64EProvider:
314 if _, ok := any(n).(float64); !ok {
315 return 0, fmt.Errorf(errorMsg, i, i, n)
316 }
317
318 v, err := s.Float64()
319 if err != nil {
320 return 0, fmt.Errorf(errorMsg, i, i, n)
321 }
322
323 if v < 0 {
324 return 0, errNegativeNotAllowed
325 }
326
327 return T(v), nil
328 case float64Provider:
329 if _, ok := any(n).(float64); !ok {
330 return 0, fmt.Errorf(errorMsg, i, i, n)
331 }
332
333 v := s.Float64()
334
335 if v < 0 {

Callers

nothing calls this directly

Calls 3

indirectFunction · 0.85
resolveAliasFunction · 0.85
Float64Method · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…