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