gen.go 1.2 KB

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