Chromium Code Reviews| Index: pkg/intl/tools/generate_locale_data_files.dart |
| =================================================================== |
| --- pkg/intl/tools/generate_locale_data_files.dart (revision 0) |
| +++ pkg/intl/tools/generate_locale_data_files.dart (revision 0) |
| @@ -0,0 +1,79 @@ |
| +// 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 that's represented as a Dart map |
| + * indexed by locale into individual files named by locale. This should be run |
| + * any time the locale data changes. |
| + * This writes the files into two directories - the result of [dataDirectory], |
| + * imported from date_time_format_file_test, and a subdirectory of it called |
| + * patterns. The main directory will also have a list of all the locales in |
| + * a file called localeList.dart, which will be imported by the |
|
Emily Fortuna
2012/09/04 20:14:42
Comment is incomplete here. Try rephrasing this so
Alan Knight
2012/09/04 23:39:03
Done.
|
| + */ |
| + |
| +#import('../date_symbols.dart'); |
| +#import('../date_symbol_data_local.dart'); |
| +#import('../date_time_patterns.dart'); |
| +#import('../date_format.dart'); |
| +#import('dart:io'); |
| +#import('dart:json'); |
| +#import('../test/data_directory.dart'); |
| + |
| +main() { |
| + initializeDateFormatting("en_IGNORED", null); |
| + writeSymbolData(); |
| + writePatternData(); |
| + // TODO(alanknight): Are the en_ISO patterns reliably the same as general en? |
| + writePatterns("en_ISO", dateTimePatternMap()["en"]); |
| + 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())); |
| +} |