Documentation ¶
Overview ¶
Package collate contains types for comparing and sorting Unicode strings according to a given collation order. Package locale provides a high-level interface to collation. Users should typically use that package instead.
Index ¶
- func Locales() []string
- type AlternateHandling
- type Buffer
- type Collator
- func (c *Collator) Compare(a, b []byte) int
- func (c *Collator) CompareString(a, b string) int
- func (c *Collator) Key(buf *Buffer, str []byte) []byte
- func (c *Collator) KeyFromString(buf *Buffer, str string) []byte
- func (c *Collator) Prefix(s, prefix []byte) int
- func (c *Collator) SetVariableTop(r rune)
- type Level
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AlternateHandling ¶
type AlternateHandling int
AlternateHandling identifies the various ways in which variables are handled. A rune with a primary weight lower than the variable top is considered a variable. See http://www.unicode.org/reports/tr10/#Variable_Weighting for details.
const ( // AltNonIgnorable turns off special handling of variables. AltNonIgnorable AlternateHandling = iota // AltBlanked sets variables and all subsequent primary ignorables to be // ignorable at all levels. This is identical to removing all variables // and subsequent primary ignorables from the input. AltBlanked // AltShifted sets variables to be ignorable for levels one through three and // adds a fourth level based on the values of the ignored levels. AltShifted // AltShiftTrimmed is a slight variant of AltShifted that is used to // emulate POSIX. AltShiftTrimmed )
type Buffer ¶
type Buffer struct {
// contains filtered or unexported fields
}
Buffer holds keys generated by Key and KeyString.
type Collator ¶
type Collator struct { // Strength sets the maximum level to use in comparison. Strength Level // Alternate specifies an alternative handling of variables. Alternate AlternateHandling // Backwards specifies the order of sorting at the secondary level. // This option exists predominantly to support reverse sorting of accents in French. Backwards bool // TODO: implement: // With HiraganaQuaternary enabled, Hiragana codepoints will get lower values // than all the other non-variable code points. Strength must be greater or // equal to Quaternary for this to take effect. HiraganaQuaternary bool // If CaseLevel is true, a level consisting only of case characteristics will // be inserted in front of the tertiary level. To ignore accents but take // cases into account, set Strength to Primary and CaseLevel to true. CaseLevel bool // If Numeric is true, any sequence of decimal digits (category is Nd) is sorted // at a primary level with its numeric value. For example, "A-21" < "A-123". Numeric bool // contains filtered or unexported fields }
Collator provides functionality for comparing strings for a given collation order.
func Init ¶
func Init(data interface{}) *Collator
Init is used by type Builder in exp/locale/collate/build/ to create Collator instances. It is for internal use only.
func (*Collator) Compare ¶
Compare returns an integer comparing the two byte slices. The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
func (*Collator) CompareString ¶
CompareString returns an integer comparing the two strings. The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
func (*Collator) Key ¶
Key returns the collation key for str. Passing the buffer buf may avoid memory allocations. The returned slice will point to an allocation in Buffer and will remain valid until the next call to buf.Reset().
func (*Collator) KeyFromString ¶
KeyFromString returns the collation key for str. Passing the buffer buf may avoid memory allocations. The returned slice will point to an allocation in Buffer and will retain valid until the next call to buf.ResetKeys().
func (*Collator) SetVariableTop ¶
SetVariableTop sets all runes with primary strength less than the primary strength of r to be variable and thus affected by alternate handling.
type Level ¶
type Level int
Level identifies the collation comparison level. The primary level corresponds to the basic sorting of text. The secondary level corresponds to accents and related linguistic elements. The tertiary level corresponds to casing and related concepts. The quaternary level is derived from the other levels by the various algorithms for handling variable elements.