Documentation
¶
Overview ¶
Package value parses lexical forms, canonicalizes values, and derives XSD value-space keys.
Index ¶
- Variables
- func AnyValueEqual[V any](left, right []V, equal func(V, V) bool) bool
- func Canonical(v Value) string
- func CanonicalDateTimeString(value time.Time, kind string, tzKind TimezoneKind) string
- func CanonicalDurationString(dur Duration) string
- func CanonicalFloat(value float64, bits int) string
- func CanonicalQName(value []byte, resolver NSResolver, dst []byte) ([]byte, error)
- func CanonicalizeBoolean(normalized []byte) (bool, []byte, error)
- func CanonicalizeDecimal(normalized []byte) (num.Dec, []byte, error)
- func CanonicalizeFloat32(normalized []byte) (float32, num.FloatClass, []byte, error)
- func CanonicalizeFloat64(normalized []byte) (float64, num.FloatClass, []byte, error)
- func CanonicalizeInteger(normalized []byte, validate func(num.Int) error) (num.Int, []byte, error)
- func Compare(left, right Value) (int, error)
- func CompareDuration(left, right Duration) (int, error)
- func Equal(left, right Value) bool
- func FieldsXMLWhitespaceSeq(in []byte) iter.Seq[[]byte]
- func FieldsXMLWhitespaceStringSeq(in string) iter.Seq[string]
- func ForEachXMLWhitespaceField(in []byte, fn func([]byte) error) (int, error)
- func FormatFraction(nanos int) string
- func HasTimezone(lexical []byte) bool
- func IsValidDate(year, month, day int) bool
- func IsXMLWhitespaceByte(b byte) bool
- func ListValuesEqual[V any](left, right [][]V, equal func(V, V) bool) bool
- func NormalizeWhitespace(mode WhitespaceMode, in, dst []byte) []byte
- func ParseAnyURI(lexical []byte) (string, error)
- func ParseBase64Binary(lexical []byte) ([]byte, error)
- func ParseBoolean(lexical []byte) (bool, error)
- func ParseByte(lexical []byte) (int8, error)
- func ParseDate(lexical []byte) (time.Time, error)
- func ParseDateParts(value string) (int, int, int, bool)
- func ParseDateTime(lexical []byte) (time.Time, error)
- func ParseDecimal(lexical []byte) (num.Dec, error)
- func ParseDouble(lexical []byte) (float64, error)
- func ParseFixedDigits(value string, start, length int) (int, bool)
- func ParseFloat(lexical []byte) (float32, error)
- func ParseGDay(lexical []byte) (time.Time, error)
- func ParseGMonth(lexical []byte) (time.Time, error)
- func ParseGMonthDay(lexical []byte) (time.Time, error)
- func ParseGYear(lexical []byte) (time.Time, error)
- func ParseGYearMonth(lexical []byte) (time.Time, error)
- func ParseHexBinary(lexical []byte) ([]byte, error)
- func ParseInt(lexical []byte) (int32, error)
- func ParseInteger(lexical []byte) (num.Int, error)
- func ParseListValueVariants[V any](lexical string, parseItem func(string) ([]V, error)) ([][]V, error)
- func ParseLong(lexical []byte) (int64, error)
- func ParseShort(lexical []byte) (int16, error)
- func ParseTime(lexical []byte) (time.Time, error)
- func ParseTimeParts(value string) (int, int, int, int, bool)
- func ParseToStdDuration(text string) (time.Duration, error)
- func ParseUnionValueVariants[T any, V any](lexical string, members []T, parseMember func(string, T) ([]V, error)) ([]V, error)
- func ParseUnsignedByte(lexical []byte) (uint8, error)
- func ParseUnsignedInt(lexical []byte) (uint32, error)
- func ParseUnsignedLong(lexical []byte) (uint64, error)
- func ParseUnsignedShort(lexical []byte) (uint16, error)
- func SplitTimezone(value string) (string, string)
- func SplitXMLWhitespace(in []byte) [][]byte
- func ToStdDuration(parsed Duration) (time.Duration, error)
- func TrimXMLWhitespace(in []byte) []byte
- func TrimXMLWhitespaceString(in string) string
- func UpperHex(dst, src []byte) []byte
- func ValidateAnyURI(value []byte) error
- func ValidateLanguage(value []byte) error
- func ValidateNCName(value []byte) error
- func ValidateNMTOKEN(value []byte) error
- func ValidateName(value []byte) error
- func ValidateQName(value []byte) error
- func ValidateTimezoneOffset(tz string) error
- func ValidateToken(value []byte) error
- type Duration
- type Kind
- type NSResolver
- type TimezoneKind
- type Value
- type WhitespaceMode
Constants ¶
This section is empty.
Variables ¶
var ( // ErrIndeterminate reports that duration contains years or months. ErrIndeterminate = errors.New("duration conversion indeterminate") // ErrOverflow reports that duration cannot fit in time.Duration. ErrOverflow = errors.New("duration conversion overflow") // ErrComponentRange reports that one duration component is out of range. ErrComponentRange = errors.New("duration component out of range") )
var ErrIndeterminateComparison = errors.New("time comparison indeterminate")
ErrIndeterminateComparison matches XSD indeterminate temporal ordering.
var ErrIndeterminateDurationComparison = errors.New("duration comparison indeterminate")
ErrIndeterminateDurationComparison reports that two durations are incomparable in XSD value space.
Functions ¶
func AnyValueEqual ¶ added in v0.0.29
AnyValueEqual reports whether any value in left equals any in right.
func Canonical ¶ added in v0.0.29
Canonical returns the canonical lexical representation for temporal values.
func CanonicalDateTimeString ¶
func CanonicalDateTimeString(value time.Time, kind string, tzKind TimezoneKind) string
CanonicalDateTimeString formats a time value into the canonical lexical form for the given XML Schema temporal kind.
func CanonicalDurationString ¶ added in v0.0.29
CanonicalDurationString formats a parsed duration in canonical lexical form used by validators.
func CanonicalFloat ¶
CanonicalFloat returns the canonical lexical form for float/double values.
func CanonicalQName ¶
func CanonicalQName(value []byte, resolver NSResolver, dst []byte) ([]byte, error)
CanonicalQName resolves a lexical QName to canonical bytes (uri + 0 + local).
func CanonicalizeBoolean ¶ added in v0.0.29
CanonicalizeBoolean parses and canonicalizes XSD boolean lexical values.
func CanonicalizeDecimal ¶ added in v0.0.29
CanonicalizeDecimal parses and canonicalizes XSD decimal lexical values.
func CanonicalizeFloat32 ¶ added in v0.0.29
CanonicalizeFloat32 parses and canonicalizes XSD float lexical values.
func CanonicalizeFloat64 ¶ added in v0.0.29
CanonicalizeFloat64 parses and canonicalizes XSD double lexical values.
func CanonicalizeInteger ¶ added in v0.0.29
CanonicalizeInteger parses and canonicalizes XSD integer lexical values.
func CompareDuration ¶ added in v0.0.29
CompareDuration orders durations using the XSD 1.0 order relation for duration.
func Equal ¶ added in v0.0.29
Equal compares temporal values in XSD value space for the same primitive.
func FieldsXMLWhitespaceSeq ¶ added in v0.0.22
FieldsXMLWhitespaceSeq yields XML whitespace-separated fields without allocation.
func FieldsXMLWhitespaceStringSeq ¶ added in v0.0.24
FieldsXMLWhitespaceStringSeq yields XML whitespace-separated string fields.
func ForEachXMLWhitespaceField ¶ added in v0.0.22
ForEachXMLWhitespaceField splits input on XML whitespace and calls fn per field. It returns the number of fields seen; iteration itself does not allocate.
func FormatFraction ¶ added in v0.0.23
FormatFraction renders fractional seconds without trailing zeros.
func HasTimezone ¶
HasTimezone reports whether a lexical temporal value includes a timezone.
func IsValidDate ¶ added in v0.0.29
IsValidDate reports whether the date is valid in the Gregorian calendar.
func IsXMLWhitespaceByte ¶ added in v0.0.22
IsXMLWhitespaceByte reports whether the byte is XML whitespace.
func ListValuesEqual ¶ added in v0.0.29
ListValuesEqual reports whether two lists of value variants are equal item-by-item.
func NormalizeWhitespace ¶
func NormalizeWhitespace(mode WhitespaceMode, in, dst []byte) []byte
NormalizeWhitespace applies the whitespace mode using dst as scratch. It returns a slice that may alias the input when no changes are needed.
func ParseAnyURI ¶ added in v0.0.22
ParseAnyURI parses an xs:anyURI lexical value and validates its syntax.
func ParseBase64Binary ¶ added in v0.0.22
ParseBase64Binary parses an xs:base64Binary lexical value into bytes.
func ParseBoolean ¶
ParseBoolean parses a boolean lexical value into a bool.
func ParseDateParts ¶ added in v0.0.29
ParseDateParts parses YYYY-MM-DD into year, month, day.
func ParseDateTime ¶
ParseDateTime parses an xs:dateTime lexical value.
func ParseDecimal ¶
ParseDecimal parses a decimal lexical value into num.Dec.
func ParseDouble ¶
ParseDouble parses a double lexical value into float64.
func ParseFixedDigits ¶ added in v0.0.29
ParseFixedDigits parses a fixed-width digit sequence from value.
func ParseFloat ¶
ParseFloat parses a float lexical value into float32.
func ParseGMonth ¶
ParseGMonth parses an xs:gMonth lexical value.
func ParseGMonthDay ¶
ParseGMonthDay parses an xs:gMonthDay lexical value.
func ParseGYear ¶
ParseGYear parses an xs:gYear lexical value.
func ParseGYearMonth ¶
ParseGYearMonth parses an xs:gYearMonth lexical value.
func ParseHexBinary ¶ added in v0.0.22
ParseHexBinary parses an xs:hexBinary lexical value into bytes.
func ParseInteger ¶
ParseInteger parses an integer lexical value into num.Int.
func ParseListValueVariants ¶ added in v0.0.29
func ParseListValueVariants[V any](lexical string, parseItem func(string) ([]V, error)) ([][]V, error)
ParseListValueVariants parses list items into per-item variants using XML whitespace splitting.
func ParseShort ¶ added in v0.0.22
ParseShort parses an xs:short lexical value into int16.
func ParseTimeParts ¶ added in v0.0.29
ParseTimeParts parses hh:mm:ss[.fff] into time parts and fractional length.
func ParseToStdDuration ¶ added in v0.0.29
ParseToStdDuration parses an XSD duration and converts it to time.Duration.
func ParseUnionValueVariants ¶ added in v0.0.29
func ParseUnionValueVariants[T any, V any](lexical string, members []T, parseMember func(string, T) ([]V, error)) ([]V, error)
ParseUnionValueVariants parses a value against union members and returns all matching variants.
func ParseUnsignedByte ¶ added in v0.0.22
ParseUnsignedByte parses an xs:unsignedByte lexical value into uint8.
func ParseUnsignedInt ¶ added in v0.0.22
ParseUnsignedInt parses an xs:unsignedInt lexical value into uint32.
func ParseUnsignedLong ¶ added in v0.0.22
ParseUnsignedLong parses an xs:unsignedLong lexical value into uint64.
func ParseUnsignedShort ¶ added in v0.0.22
ParseUnsignedShort parses an xs:unsignedShort lexical value into uint16.
func SplitTimezone ¶ added in v0.0.29
SplitTimezone separates a lexical date/time value into the main portion and timezone suffix.
func SplitXMLWhitespace ¶ added in v0.0.22
SplitXMLWhitespace splits input on XML whitespace and skips empty fields.
func ToStdDuration ¶ added in v0.0.29
ToStdDuration converts a parsed XSD duration to time.Duration.
func TrimXMLWhitespace ¶
TrimXMLWhitespace removes leading and trailing XML whitespace without allocation.
func TrimXMLWhitespaceString ¶ added in v0.0.22
TrimXMLWhitespaceString removes leading and trailing XML whitespace. It returns the original string when no trimming is needed.
func UpperHex ¶ added in v0.0.24
UpperHex renders src as uppercase hexadecimal into dst. It reuses dst when capacity allows and returns the resulting slice.
func ValidateAnyURI ¶
ValidateAnyURI validates xs:anyURI lexical constraints.
func ValidateLanguage ¶
ValidateLanguage validates xs:language lexical constraints.
func ValidateNCName ¶
ValidateNCName validates xs:NCName lexical constraints.
func ValidateNMTOKEN ¶
ValidateNMTOKEN validates xs:NMTOKEN lexical constraints.
func ValidateName ¶
ValidateName validates xs:Name lexical constraints.
func ValidateQName ¶ added in v0.0.22
ValidateQName validates xs:QName lexical constraints.
func ValidateTimezoneOffset ¶ added in v0.0.29
ValidateTimezoneOffset validates a timezone offset suffix.
func ValidateToken ¶
ValidateToken validates xs:token lexical constraints.
Types ¶
type Duration ¶ added in v0.0.29
type Duration struct {
Seconds num.Dec
Years int
Months int
Days int
Hours int
Minutes int
Negative bool
}
Duration is a parsed XSD duration lexical value.
func CanonicalizeDuration ¶ added in v0.0.29
CanonicalizeDuration parses and canonicalizes XSD duration lexical values.
func ParseDuration ¶ added in v0.0.29
ParseDuration parses an XSD duration lexical value.
type Kind ¶ added in v0.0.29
type Kind uint8
Kind identifies an XSD temporal primitive.
func KindFromPrimitiveName ¶ added in v0.0.29
KindFromPrimitiveName resolves an XSD primitive name to a temporal kind.
type NSResolver ¶
NSResolver resolves QName prefixes to namespace URIs. The empty prefix uses the default namespace when present.
type TimezoneKind ¶ added in v0.0.22
type TimezoneKind uint8
TimezoneKind describes whether a lexical value included a timezone.
const ( TZNone TimezoneKind = iota TZKnown )
func TimezoneKindFromLexical ¶ added in v0.0.22
func TimezoneKindFromLexical(lexical []byte) TimezoneKind
TimezoneKindFromLexical reports the timezone kind for a lexical value.
type Value ¶ added in v0.0.29
type Value struct {
Time time.Time
Kind Kind
TimezoneKind TimezoneKind
LeapSecond bool
}
Value stores temporal semantics used for equality, ordering, and keying.
type WhitespaceMode ¶ added in v0.0.23
type WhitespaceMode uint8
WhitespaceMode controls XML whitespace normalization.
const ( // WhitespacePreserve keeps lexical whitespace unchanged. WhitespacePreserve WhitespaceMode = iota // WhitespaceReplace converts XML whitespace characters to spaces. WhitespaceReplace // WhitespaceCollapse replaces XML whitespace with single spaces and trims edges. WhitespaceCollapse )