summaryrefslogtreecommitdiff
path: root/scalar.go
diff options
context:
space:
mode:
authorAlex Flint <[email protected]>2021-08-17 12:24:43 -0700
committerAlex Flint <[email protected]>2021-08-17 12:24:43 -0700
commit9e23a0e262d0bbebfd57c6dc6e34f2f84a37dbd5 (patch)
tree9e10da02cd39f085f57f5a1439f27ef7dc72a54f /scalar.go
parentf33108a28e6a688d20eb35a9f081de2c926ad6e5 (diff)
add support for url.URL
Diffstat (limited to 'scalar.go')
-rw-r--r--scalar.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/scalar.go b/scalar.go
index 073392c..421bfac 100644
--- a/scalar.go
+++ b/scalar.go
@@ -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
}