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