52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
|
// 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
|
||
|
}
|