github.com/go-enjin/golang-org-x-text@v0.12.1-enjin.2/internal/language/compact/gen.go (about)

     1  // Copyright 2013 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  
     8  // Language tag table generator.
     9  // Data read from the web.
    10  
    11  package main
    12  
    13  import (
    14  	"flag"
    15  	"fmt"
    16  	"log"
    17  
    18  	"github.com/go-enjin/golang-org-x-text/internal/gen"
    19  	"github.com/go-enjin/golang-org-x-text/unicode/cldr"
    20  )
    21  
    22  var (
    23  	test = flag.Bool("test",
    24  		false,
    25  		"test existing tables; can be used to compare web data with package data.")
    26  	outputFile = flag.String("output",
    27  		"tables.go",
    28  		"output file for generated tables")
    29  )
    30  
    31  func main() {
    32  	gen.Init()
    33  
    34  	w := gen.NewCodeWriter()
    35  	defer w.WriteGoFile("tables.go", "compact")
    36  
    37  	fmt.Fprintln(w, `import "github.com/go-enjin/golang-org-x-text/internal/language"`)
    38  
    39  	b := newBuilder(w)
    40  	gen.WriteCLDRVersion(w)
    41  
    42  	b.writeCompactIndex()
    43  }
    44  
    45  type builder struct {
    46  	w    *gen.CodeWriter
    47  	data *cldr.CLDR
    48  	supp *cldr.SupplementalData
    49  }
    50  
    51  func newBuilder(w *gen.CodeWriter) *builder {
    52  	r := gen.OpenCLDRCoreZip()
    53  	defer r.Close()
    54  	d := &cldr.Decoder{}
    55  	data, err := d.DecodeZip(r)
    56  	if err != nil {
    57  		log.Fatal(err)
    58  	}
    59  	b := builder{
    60  		w:    w,
    61  		data: data,
    62  		supp: data.Supplemental(),
    63  	}
    64  	return &b
    65  }