| // Copyright 2012 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| package collate |
| |
| // Export for testing. |
| // TODO: no longer necessary. Remove at some point. |
| |
| import ( |
| "fmt" |
| |
| "golang.org/x/text/internal/colltab" |
| ) |
| |
| const ( |
| defaultSecondary = 0x20 |
| defaultTertiary = 0x2 |
| ) |
| |
| type Weights struct { |
| Primary, Secondary, Tertiary, Quaternary int |
| } |
| |
| func W(ce ...int) Weights { |
| w := Weights{ce[0], defaultSecondary, defaultTertiary, 0} |
| if len(ce) > 1 { |
| w.Secondary = ce[1] |
| } |
| if len(ce) > 2 { |
| w.Tertiary = ce[2] |
| } |
| if len(ce) > 3 { |
| w.Quaternary = ce[3] |
| } |
| return w |
| } |
| func (w Weights) String() string { |
| return fmt.Sprintf("[%X.%X.%X.%X]", w.Primary, w.Secondary, w.Tertiary, w.Quaternary) |
| } |
| |
| func convertFromWeights(ws []Weights) []colltab.Elem { |
| out := make([]colltab.Elem, len(ws)) |
| for i, w := range ws { |
| out[i], _ = colltab.MakeElem(w.Primary, w.Secondary, w.Tertiary, 0) |
| if out[i] == colltab.Ignore && w.Quaternary > 0 { |
| out[i] = colltab.MakeQuaternary(w.Quaternary) |
| } |
| } |
| return out |
| } |