Add ToDuration
diff --git a/cast.go b/cast.go
index 9c607fa..fe382ca 100644
--- a/cast.go
+++ b/cast.go
@@ -17,6 +17,11 @@
return v
}
+func ToDuration(i interface{}) time.Duration {
+ v, _ := ToDurationE(i)
+ return v
+}
+
func ToFloat64(i interface{}) float64 {
v, _ := ToFloat64E(i)
return v
diff --git a/caste.go b/caste.go
index 11a06fb..72c7690 100644
--- a/caste.go
+++ b/caste.go
@@ -35,6 +35,22 @@
}
}
+func ToDurationE(i interface{}) (d time.Duration, err error) {
+ i = indirect(i)
+ jww.DEBUG.Println("ToDurationE called on type:", reflect.TypeOf(i))
+
+ switch s := i.(type) {
+ case time.Duration:
+ return s, nil
+ case string:
+ d, err = time.ParseDuration(s)
+ return
+ default:
+ err = fmt.Errorf("Unable to Cast %#v to Duration\n", i)
+ return
+ }
+}
+
func ToBoolE(i interface{}) (bool, error) {
i = indirect(i)
jww.DEBUG.Println("ToBoolE called on type:", reflect.TypeOf(i))