2019-01-30 06:28:40 +09:00
|
|
|
package anyuri
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"net/url"
|
|
|
|
)
|
|
|
|
|
|
|
|
// SerializeAnyURI converts a anyURI value to an interface representation suitable
|
|
|
|
// for marshalling into a text or binary format.
|
|
|
|
func SerializeAnyURI(this *url.URL) (interface{}, error) {
|
|
|
|
return this.String(), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// DeserializeAnyURI creates anyURI value from an interface representation that
|
|
|
|
// has been unmarshalled from a text or binary format.
|
|
|
|
func DeserializeAnyURI(this interface{}) (*url.URL, error) {
|
|
|
|
var u *url.URL
|
|
|
|
var err error
|
|
|
|
if s, ok := this.(string); ok {
|
|
|
|
u, err = url.Parse(s)
|
|
|
|
if err != nil {
|
|
|
|
err = fmt.Errorf("%v cannot be interpreted as a xsd:anyURI: %s", this, err)
|
2019-02-05 06:29:04 +09:00
|
|
|
} else if len(u.Scheme) == 0 {
|
|
|
|
err = fmt.Errorf("%v cannot be interpreted as a xsd:anyURI: no scheme", this)
|
2019-01-30 06:28:40 +09:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
err = fmt.Errorf("%v cannot be interpreted as a string for xsd:anyURI", this)
|
|
|
|
}
|
|
|
|
return u, err
|
|
|
|
}
|
|
|
|
|
|
|
|
// LessAnyURI returns true if the left anyURI value is less than the right value.
|
|
|
|
func LessAnyURI(lhs, rhs *url.URL) bool {
|
|
|
|
return lhs.String() < rhs.String()
|
|
|
|
}
|