...
1
2
3
4
5 package collate
6
7
8
9
10 import (
11 "fmt"
12
13 "golang.org/x/text/internal/colltab"
14 )
15
16 const (
17 defaultSecondary = 0x20
18 defaultTertiary = 0x2
19 )
20
21 type Weights struct {
22 Primary, Secondary, Tertiary, Quaternary int
23 }
24
25 func W(ce ...int) Weights {
26 w := Weights{ce[0], defaultSecondary, defaultTertiary, 0}
27 if len(ce) > 1 {
28 w.Secondary = ce[1]
29 }
30 if len(ce) > 2 {
31 w.Tertiary = ce[2]
32 }
33 if len(ce) > 3 {
34 w.Quaternary = ce[3]
35 }
36 return w
37 }
38 func (w Weights) String() string {
39 return fmt.Sprintf("[%X.%X.%X.%X]", w.Primary, w.Secondary, w.Tertiary, w.Quaternary)
40 }
41
42 func convertFromWeights(ws []Weights) []colltab.Elem {
43 out := make([]colltab.Elem, len(ws))
44 for i, w := range ws {
45 out[i], _ = colltab.MakeElem(w.Primary, w.Secondary, w.Tertiary, 0)
46 if out[i] == colltab.Ignore && w.Quaternary > 0 {
47 out[i] = colltab.MakeQuaternary(w.Quaternary)
48 }
49 }
50 return out
51 }
52
View as plain text