mirror of
https://github.com/stashapp/stash.git
synced 2025-12-15 12:52:38 +01:00
* Add collation to directory listings. Closes #1806 Introduce a new `locale` arg to the `Query.directory` field. Set "en" as the default for the field for backward compatibility. Use the given locale, sending it through a language matcher, and use `x/text` as the collation engine for the matched language. Augment the file `ListDirs` call to optionally take a Collator. If the Collator is given, sort file listings according to the collators rules. While here, document the GraphQL schema a bit more. Add matchers by looking at the current front-end locales, and make sure each of these occur in the matcher list. * Language matcher touchups * Avoid having `en-US` twice. * Introduce `en-AU`. * Pass IgnoreCase and Numeric collation Allow the collator to be configured with options. Pass the options IgnoreCase and Numeric to the collator.
32 lines
869 B
Go
32 lines
869 B
Go
// Copyright 2013 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
|
|
|
|
import "golang.org/x/text/internal/colltab"
|
|
|
|
const blockSize = 64
|
|
|
|
func getTable(t tableIndex) *colltab.Table {
|
|
return &colltab.Table{
|
|
Index: colltab.Trie{
|
|
Index0: mainLookup[:][blockSize*t.lookupOffset:],
|
|
Values0: mainValues[:][blockSize*t.valuesOffset:],
|
|
Index: mainLookup[:],
|
|
Values: mainValues[:],
|
|
},
|
|
ExpandElem: mainExpandElem[:],
|
|
ContractTries: colltab.ContractTrieSet(mainCTEntries[:]),
|
|
ContractElem: mainContractElem[:],
|
|
MaxContractLen: 18,
|
|
VariableTop: varTop,
|
|
}
|
|
}
|
|
|
|
// tableIndex holds information for constructing a table
|
|
// for a certain locale based on the main table.
|
|
type tableIndex struct {
|
|
lookupOffset uint32
|
|
valuesOffset uint32
|
|
}
|