diff options
Diffstat (limited to 'scalar.go')
| -rw-r--r-- | scalar.go | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -8,6 +8,7 @@ import ( "fmt" "net" "net/mail" + "net/url" "reflect" "strconv" "time" @@ -19,6 +20,7 @@ var ( durationType = reflect.TypeOf(time.Duration(0)) mailAddressType = reflect.TypeOf(mail.Address{}) macType = reflect.TypeOf(net.HardwareAddr{}) + urlType = reflect.TypeOf(url.URL{}) ) var ( @@ -86,6 +88,13 @@ func ParseValue(v reflect.Value, s string) error { } v.Set(reflect.ValueOf(ip)) return nil + case url.URL: + url, err := url.Parse(s) + if err != nil { + return err + } + v.Set(reflect.ValueOf(*url)) + return nil } // Switch on kind so that we can handle derived types @@ -136,7 +145,7 @@ func CanParse(t reflect.Type) bool { // Check for other special types switch t { - case durationType, mailAddressType, macType: + case durationType, mailAddressType, macType, urlType: return true } |
