0ba121fdfb
Fix not returning errors Fix integration tests Add more tests Make task filtering actually work Change tests Fix using filter conditions Fix test Remove unused fields Fix static check Remove start and end date fields on task collection Fix misspell add filter logic when getting tasks Add parsing filter query parameters into task filters Start adding support for filters Co-authored-by: kolaente <k@knt.li> Reviewed-on: https://kolaente.dev/vikunja/api/pulls/243
133 lines
3 KiB
Go
133 lines
3 KiB
Go
// Copyright 2015 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.
|
|
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
|
|
"golang.org/x/text/internal/gen"
|
|
"golang.org/x/text/internal/triegen"
|
|
"golang.org/x/text/internal/ucd"
|
|
)
|
|
|
|
var outputFile = flag.String("out", "tables.go", "output file")
|
|
|
|
func main() {
|
|
gen.Init()
|
|
gen.Repackage("gen_trieval.go", "trieval.go", "bidi")
|
|
gen.Repackage("gen_ranges.go", "ranges_test.go", "bidi")
|
|
|
|
genTables()
|
|
}
|
|
|
|
// bidiClass names and codes taken from class "bc" in
|
|
// https://www.unicode.org/Public/8.0.0/ucd/PropertyValueAliases.txt
|
|
var bidiClass = map[string]Class{
|
|
"AL": AL, // ArabicLetter
|
|
"AN": AN, // ArabicNumber
|
|
"B": B, // ParagraphSeparator
|
|
"BN": BN, // BoundaryNeutral
|
|
"CS": CS, // CommonSeparator
|
|
"EN": EN, // EuropeanNumber
|
|
"ES": ES, // EuropeanSeparator
|
|
"ET": ET, // EuropeanTerminator
|
|
"L": L, // LeftToRight
|
|
"NSM": NSM, // NonspacingMark
|
|
"ON": ON, // OtherNeutral
|
|
"R": R, // RightToLeft
|
|
"S": S, // SegmentSeparator
|
|
"WS": WS, // WhiteSpace
|
|
|
|
"FSI": Control,
|
|
"PDF": Control,
|
|
"PDI": Control,
|
|
"LRE": Control,
|
|
"LRI": Control,
|
|
"LRO": Control,
|
|
"RLE": Control,
|
|
"RLI": Control,
|
|
"RLO": Control,
|
|
}
|
|
|
|
func genTables() {
|
|
if numClass > 0x0F {
|
|
log.Fatalf("Too many Class constants (%#x > 0x0F).", numClass)
|
|
}
|
|
w := gen.NewCodeWriter()
|
|
defer w.WriteVersionedGoFile(*outputFile, "bidi")
|
|
|
|
gen.WriteUnicodeVersion(w)
|
|
|
|
t := triegen.NewTrie("bidi")
|
|
|
|
// Build data about bracket mapping. These bits need to be or-ed with
|
|
// any other bits.
|
|
orMask := map[rune]uint64{}
|
|
|
|
xorMap := map[rune]int{}
|
|
xorMasks := []rune{0} // First value is no-op.
|
|
|
|
ucd.Parse(gen.OpenUCDFile("BidiBrackets.txt"), func(p *ucd.Parser) {
|
|
r1 := p.Rune(0)
|
|
r2 := p.Rune(1)
|
|
xor := r1 ^ r2
|
|
if _, ok := xorMap[xor]; !ok {
|
|
xorMap[xor] = len(xorMasks)
|
|
xorMasks = append(xorMasks, xor)
|
|
}
|
|
entry := uint64(xorMap[xor]) << xorMaskShift
|
|
switch p.String(2) {
|
|
case "o":
|
|
entry |= openMask
|
|
case "c", "n":
|
|
default:
|
|
log.Fatalf("Unknown bracket class %q.", p.String(2))
|
|
}
|
|
orMask[r1] = entry
|
|
})
|
|
|
|
w.WriteComment(`
|
|
xorMasks contains masks to be xor-ed with brackets to get the reverse
|
|
version.`)
|
|
w.WriteVar("xorMasks", xorMasks)
|
|
|
|
done := map[rune]bool{}
|
|
|
|
insert := func(r rune, c Class) {
|
|
if !done[r] {
|
|
t.Insert(r, orMask[r]|uint64(c))
|
|
done[r] = true
|
|
}
|
|
}
|
|
|
|
// Insert the derived BiDi properties.
|
|
ucd.Parse(gen.OpenUCDFile("extracted/DerivedBidiClass.txt"), func(p *ucd.Parser) {
|
|
r := p.Rune(0)
|
|
class, ok := bidiClass[p.String(1)]
|
|
if !ok {
|
|
log.Fatalf("%U: Unknown BiDi class %q", r, p.String(1))
|
|
}
|
|
insert(r, class)
|
|
})
|
|
visitDefaults(insert)
|
|
|
|
// TODO: use sparse blocks. This would reduce table size considerably
|
|
// from the looks of it.
|
|
|
|
sz, err := t.Gen(w)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
w.Size += sz
|
|
}
|
|
|
|
// dummy values to make methods in gen_common compile. The real versions
|
|
// will be generated by this file to tables.go.
|
|
var (
|
|
xorMasks []rune
|
|
)
|