| // 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 ( | |
| "log" | |
| "golang.org/x/text/internal/gen" | |
| "golang.org/x/text/language" | |
| "golang.org/x/text/unicode/cldr" | |
| ) | |
| func main() { | |
| r := gen.OpenCLDRCoreZip() | |
| defer r.Close() | |
| d := &cldr.Decoder{} | |
| data, err := d.DecodeZip(r) | |
| if err != nil { | |
| log.Fatalf("DecodeZip: %v", err) | |
| } | |
| w := gen.NewCodeWriter() | |
| defer w.WriteGoFile("tables.go", "internal") | |
| // Create parents table. | |
| parents := make([]uint16, language.NumCompactTags) | |
| for _, loc := range data.Locales() { | |
| tag := language.MustParse(loc) | |
| index, ok := language.CompactIndex(tag) | |
| if !ok { | |
| continue | |
| } | |
| parentIndex := 0 // und | |
| for p := tag.Parent(); p != language.Und; p = p.Parent() { | |
| if x, ok := language.CompactIndex(p); ok { | |
| parentIndex = x | |
| break | |
| } | |
| } | |
| parents[index] = uint16(parentIndex) | |
| } | |
| w.WriteComment(` | |
| Parent maps a compact index of a tag to the compact index of the parent of | |
| this tag.`) | |
| w.WriteVar("Parent", parents) | |
| } |