golang.org/x/text@v0.14.0/collate/export_test.go (about) 1 // Copyright 2012 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package collate 6 7 // Export for testing. 8 // TODO: no longer necessary. Remove at some point. 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 }