github.com/go-xe2/third@v1.0.3/golang.org/x/text/internal/gen.go (about)

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