93 lines
2.1 KiB
Go
93 lines
2.1 KiB
Go
|
// This file was generated by go generate; DO NOT EDIT
|
||
|
|
||
|
package number
|
||
|
|
||
|
import (
|
||
|
"unicode/utf8"
|
||
|
|
||
|
"golang.org/x/text/internal/format/plural"
|
||
|
)
|
||
|
|
||
|
// A system identifies a CLDR numbering system.
|
||
|
type system byte
|
||
|
|
||
|
type systemData struct {
|
||
|
id system
|
||
|
digitSize byte // number of UTF-8 bytes per digit
|
||
|
zero [utf8.UTFMax]byte // UTF-8 sequence of zero digit.
|
||
|
}
|
||
|
|
||
|
// A SymbolType identifies a symbol of a specific kind.
|
||
|
type SymbolType int
|
||
|
|
||
|
const (
|
||
|
SymDecimal SymbolType = iota
|
||
|
SymGroup
|
||
|
SymList
|
||
|
SymPercentSign
|
||
|
SymPlusSign
|
||
|
SymMinusSign
|
||
|
SymExponential
|
||
|
SymSuperscriptingExponent
|
||
|
SymPerMille
|
||
|
SymInfinity
|
||
|
SymNan
|
||
|
SymTimeSeparator
|
||
|
|
||
|
NumSymbolTypes
|
||
|
)
|
||
|
|
||
|
type altSymData struct {
|
||
|
compactTag uint16
|
||
|
system system
|
||
|
symIndex byte
|
||
|
}
|
||
|
|
||
|
var countMap = map[string]plural.Form{
|
||
|
"other": plural.Other,
|
||
|
"zero": plural.Zero,
|
||
|
"one": plural.One,
|
||
|
"two": plural.Two,
|
||
|
"few": plural.Few,
|
||
|
"many": plural.Many,
|
||
|
}
|
||
|
|
||
|
type pluralCheck struct {
|
||
|
// category:
|
||
|
// 3..7: opID
|
||
|
// 0..2: category
|
||
|
cat byte
|
||
|
setID byte
|
||
|
}
|
||
|
|
||
|
// opID identifies the type of operand in the plural rule, being i, n or f.
|
||
|
// (v, w, and t are treated as filters in our implementation.)
|
||
|
type opID byte
|
||
|
|
||
|
const (
|
||
|
opMod opID = 0x1 // is '%' used?
|
||
|
opNotEqual opID = 0x2 // using "!=" to compare
|
||
|
opI opID = 0 << 2 // integers after taking the absolute value
|
||
|
opN opID = 1 << 2 // full number (must be integer)
|
||
|
opF opID = 2 << 2 // fraction
|
||
|
opV opID = 3 << 2 // number of visible digits
|
||
|
opW opID = 4 << 2 // number of visible digits without trailing zeros
|
||
|
opBretonM opID = 5 << 2 // hard-wired rule for Breton
|
||
|
opItalian800 opID = 6 << 2 // hard-wired rule for Italian
|
||
|
opAzerbaijan00s opID = 7 << 2 // hard-wired rule for Azerbaijan
|
||
|
)
|
||
|
const (
|
||
|
// Use this plural form to indicate the next rule needs to match as well.
|
||
|
// The last condition in the list will have the correct plural form.
|
||
|
andNext = 0x7
|
||
|
formMask = 0x7
|
||
|
|
||
|
opShift = 3
|
||
|
|
||
|
// numN indicates the maximum integer, or maximum mod value, for which we
|
||
|
// have inclusion masks.
|
||
|
numN = 100
|
||
|
// The common denominator of the modulo that is taken.
|
||
|
maxMod = 100
|
||
|
)
|