in reify.go [777:808]
func reifyDuration(
opts fieldOptions,
val value,
_ reflect.Type,
) (reflect.Value, Error) {
var d time.Duration
var err error
switch v := val.(type) {
case *cfgInt:
d = time.Duration(v.i) * time.Second
case *cfgUint:
d = time.Duration(v.u) * time.Second
case *cfgFloat:
d = time.Duration(v.f * float64(time.Second))
case *cfgString:
d, err = time.ParseDuration(v.s)
default:
var s string
s, err = val.toString(opts.opts)
if err != nil {
return reflect.Value{}, raiseInvalidDuration(val, err)
}
d, err = time.ParseDuration(s)
}
if err != nil {
return reflect.Value{}, raiseInvalidDuration(val, err)
}
return reflect.ValueOf(d), nil
}