func doTest(t *testing.T, tc Test) { bld := build.NewBuilder() parseUCA(bld) w, err := bld.Build() Error(err) var tag language.Tag if !strings.Contains(tc.name, "NON_IGNOR") { tag = shifted } c := NewFromTable(w, OptionsFromTag(tag)) b := &Buffer{} prev := tc.str[0] for i := 1; i < len(tc.str); i++ { b.Reset() s := tc.str[i] ka := c.Key(b, prev) kb := c.Key(b, s) if r := bytes.Compare(ka, kb); r == 1 { t.Errorf("%s:%d: Key(%.4X) < Key(%.4X) (%X < %X) == %d; want -1 or 0", tc.name, i, []rune(string(prev)), []rune(string(s)), ka, kb, r) prev = s continue } if r := c.Compare(prev, s); r == 1 { t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want -1 or 0", tc.name, i, runes(prev), runes(s), r) } if r := c.Compare(s, prev); r == -1 { t.Errorf("%s:%d: Compare(%.4X, %.4X) == %d; want 1 or 0", tc.name, i, runes(s), runes(prev), r) } prev = s } }
func main() { gen.Init() b := build.NewBuilder() parseUCA(b) if tables.contains("chars") { parseMain() } parseCollation(b) c, err := b.Build() failOnError(err) if *test { testCollator(collate.NewFromTable(c)) } else { w := &bytes.Buffer{} gen.WriteUnicodeVersion(w) gen.WriteCLDRVersion(w) if tables.contains("collate") { _, err = b.Print(w) failOnError(err) } if tables.contains("chars") { printExemplarCharacters(w) } gen.WriteGoFile("tables.go", *pkg, w.Bytes()) } }
func makeTable(in []input) (*Collator, error) { b := build.NewBuilder() for _, r := range in { if e := b.Add([]rune(r.str), r.ces, nil); e != nil { panic(e) } } t, err := b.Build() if err != nil { return nil, err } return NewFromTable(t), nil }
func main() { flag.Parse() b := build.NewBuilder() if *root != "" { parseUCA(b) } if *cldrzip != "" { if tables.contains("chars") { parseMain() } parseCollation(b) } c, err := b.Build() failOnError(err) if *test { testCollator(collate.NewFromTable(c)) } else { fmt.Println("// Generated by running") fmt.Printf("// maketables -root=%s -cldr=%s\n", *root, *cldrzip) fmt.Println("// DO NOT EDIT") fmt.Println("// TODO: implement more compact representation for sparse blocks.") if *tags != "" { fmt.Printf("// +build %s\n", *tags) } fmt.Println("") fmt.Printf("package %s\n", *pkg) if tables.contains("collate") { fmt.Println("") _, err = b.Print(os.Stdout) failOnError(err) } if tables.contains("chars") { printExemplarCharacters(os.Stdout) } } }