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  	}  | 
