37 lines
732 B
Go
37 lines
732 B
Go
package ast
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"fmt"
|
|
)
|
|
|
|
type ErrInvalidAttrName struct {
|
|
Actual xml.Name
|
|
Expected xml.Name
|
|
}
|
|
|
|
var _ error = ErrInvalidAttrName{}
|
|
|
|
func (err ErrInvalidAttrName) Error() string {
|
|
return fmt.Sprintf("attribute %q has invalid name, expected %q", fmtXMLName(err.Expected), fmtXMLName(err.Actual))
|
|
}
|
|
|
|
type ErrInvalidAttrValue struct {
|
|
Attr xml.Attr
|
|
Message string
|
|
}
|
|
|
|
var _ error = ErrInvalidAttrValue{}
|
|
|
|
func (err ErrInvalidAttrValue) 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
|
|
}
|