blob: 9543d583239ac3697daba77235bf120450dc6e5e [file] [log] [blame]
Don Newton98fd8812019-09-23 15:15:02 -04001// Copyright 2018 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// +build ignore
6
7package main
8
9import (
10 "log"
11
12 "golang.org/x/text/internal/gen"
13 "golang.org/x/text/internal/language"
14 "golang.org/x/text/internal/language/compact"
15 "golang.org/x/text/unicode/cldr"
16)
17
18func main() {
19 r := gen.OpenCLDRCoreZip()
20 defer r.Close()
21
22 d := &cldr.Decoder{}
23 data, err := d.DecodeZip(r)
24 if err != nil {
25 log.Fatalf("DecodeZip: %v", err)
26 }
27
28 w := gen.NewCodeWriter()
29 defer w.WriteGoFile("parents.go", "compact")
30
31 // Create parents table.
32 type ID uint16
33 parents := make([]ID, compact.NumCompactTags)
34 for _, loc := range data.Locales() {
35 tag := language.MustParse(loc)
36 index, ok := compact.FromTag(tag)
37 if !ok {
38 continue
39 }
40 parentIndex := compact.ID(0) // und
41 for p := tag.Parent(); p != language.Und; p = p.Parent() {
42 if x, ok := compact.FromTag(p); ok {
43 parentIndex = x
44 break
45 }
46 }
47 parents[index] = ID(parentIndex)
48 }
49
50 w.WriteComment(`
51 parents maps a compact index of a tag to the compact index of the parent of
52 this tag.`)
53 w.WriteVar("parents", parents)
54}