collate

package
v0.0.0-...-1d03baa Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 21, 2013 License: BSD-3-Clause Imports: 4 Imported by: 0

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

Constants

This section is empty.

Variables

This section is empty.

Functions

func Locales

func Locales() []string

Locales returns the list of locales for which collating differs from its parent locale. The returned value should not be modified.

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.

func (*Buffer) Reset

func (b *Buffer) Reset()

Reset clears the buffer from previous results 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 New

func New(loc string) *Collator

New returns a new Collator initialized for the given locale.

func (*Collator) Compare

func (c *Collator) Compare(a, b []byte) int

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

func (c *Collator) CompareString(a, b string) int

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

func (c *Collator) Key(buf *Buffer, str []byte) []byte

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

func (c *Collator) KeyFromString(buf *Buffer, str string) []byte

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) Prefix

func (c *Collator) Prefix(s, prefix []byte) int

func (*Collator) SetVariableTop

func (c *Collator) SetVariableTop(r rune)

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.

const (
	Primary Level = iota
	Secondary
	Tertiary
	Quaternary
	Identity
)

Directories

Path Synopsis
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL