in generator.go [126:186]
func main() {
cldrVersion := flag.Int("cldr", 45, "CLDR version")
cldrZipFilePath := flag.String("file", "", "CLDR core.zip path")
flag.Parse()
data, err := readCLDRCoreFile(*cldrZipFilePath, *cldrVersion)
if err != nil {
log.Fatalf("failed to read CLDR zip: %v", err)
}
sortedLanguages := buildLanguageGraph(data).getSorted()
var nonEmptyLanguages []string
for _, tag := range sortedLanguages {
localeLDML := data[tag]
parsedTag := language.Make(tag)
var localeCalendar cldrLocaleData
if parsedTag.Parent() != language.Und {
existing, ok := localesData[localeLDML.Parent]
if ok {
localeCalendar = existing.clone()
} else {
localeCalendar = cldrLocaleData{}
}
} else {
localeCalendar = cldrLocaleData{}
}
gregorianCalendar := findGregorianCalendar(localeLDML.LDML)
if gregorianCalendar != nil {
err = fillLocaleData(tag, gregorianCalendar, &localeCalendar)
if err != nil {
log.Fatal(err)
}
}
if !localeCalendar.isEmpty() {
localesData[tag] = &localeCalendar
nonEmptyLanguages = append(nonEmptyLanguages, tag)
} else {
log.Printf("skipped locale with empty dates: %s\n", tag)
}
}
sort.Strings(nonEmptyLanguages)
var tablesTmplDataItems []*tablesTmplDataItem
for _, tag := range nonEmptyLanguages {
localeCalendar := localesData[tag]
if localeCalendar.isValid() {
tablesTmplDataItems = append(tablesTmplDataItems, newTablesTmplDataItem(tag, localeCalendar))
} else {
log.Printf("skipped invalid locale: %s\n", tag)
}
}
err = writeTableGoFile(cldrVersion, tablesTmplDataItems)
if err != nil {
log.Fatal(err)
}
}