37 lines
709 B
Go
37 lines
709 B
Go
package attr
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
)
|
|
|
|
type ErrInvalidName struct {
|
|
Actual xml.Name
|
|
Expected xml.Name
|
|
}
|
|
|
|
var _ error = ErrInvalidName{}
|
|
|
|
func (err ErrInvalidName) Error() string {
|
|
return fmt.Sprintf("attribute %q has invalid name, expected %q", FmtXMLName(err.Actual), FmtXMLName(err.Expected))
|
|
}
|
|
|
|
type ErrInvalidValue struct {
|
|
Attr xml.Attr
|
|
Message string
|
|
}
|
|
|
|
var _ error = ErrInvalidValue{}
|
|
|
|
func (err ErrInvalidValue) Error() string {
|
|
return fmt.Sprintf("attribute %q's value %q is invalid: %s", FmtXMLName(err.Attr.Name), err.Attr.Value, err.Message)
|
|
}
|
|
|
|
func FmtXMLName(n xml.Name) string {
|
|
s := n.Local
|
|
if n.Space != "" {
|
|
s = fmt.Sprintf("%s:%s", n.Space, n.Local)
|
|
}
|
|
return s
|
|
}
|