blob: 81521f9559411ffe77d2589bf7252a0aa7509861 [file] [log] [blame]
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/**
* A utility program to take locale data represented as a Dart map whose keys
* are locale names and write it into individual JSON files named by locale.
* This should be run any time the locale data changes.
*
* The files are written under "data/dates", in two subdirectories, "symbols"
* and "patterns". In "data/dates" it will also generate "localeList.dart",
* which is sourced by the date_symbol_data... files.
*/
import '../lib/date_symbols.dart';
import '../lib/date_symbol_data_local.dart';
import '../lib/date_time_patterns.dart';
import '../lib/intl.dart';
import 'dart:io';
import 'dart:json';
import '../test/data_directory.dart';
main() {
initializeDateFormatting("en_IGNORED", null);
writeSymbolData();
writePatternData();
writeLocaleList();
}
void writeLocaleList() {
var file = new File('${dataDirectory}localeList.dart');
var outputStream = file.openOutputStream();
outputStream.writeString(
'// Copyright (c) 2012, the Dart project authors. Please see the '
'AUTHORS file\n// for details. All rights reserved. Use of this source'
'code is governed by a\n// BSD-style license that can be found in the'
' LICENSE file.\n\n'
'/// Hard-coded list of all available locales for dates.\n');
outputStream.writeString('final availableLocalesForDateFormatting = const [');
List<String> allLocales = DateFormat.allLocalesWithSymbols();
allLocales.forEach((locale) {
outputStream.writeString('"$locale"');
if (locale == allLocales.last) {
outputStream.writeString('];');
} else {
outputStream.writeString(',\n ');
}
});
}
void writeSymbolData() {
dateTimeSymbolMap().forEach(
(locale, symbols) => writeSymbols(locale, symbols));
}
void writePatternData() {
dateTimePatternMap().forEach(
(locale, patterns) => writePatterns(locale, patterns));
}
void writeSymbols(locale, symbols) {
var file = new File('${dataDirectory}symbols/${locale}.json');
var outputStream = file.openOutputStream();
writeToJSON(symbols, outputStream);
outputStream.close();
}
void writePatterns(locale, patterns) {
var file = new File('${dataDirectory}patterns/${locale}.json');
var outputStream = file.openOutputStream();
outputStream.writeString(JSON.stringify(patterns));
outputStream.close();
}
void writeToJSON(dynamic data, OutputStream out) {
out.writeString(JSON.stringify(data.serializeToMap()));
}