| // 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) | 
 | } |