blob: 2f6a5759e12e3afb175c58f75fd27ea8364bf777 [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 'locale_list.dart',
/// which is sourced by the date_symbol_data... files.
import 'dart:convert';
import 'dart:io';
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/date_time_patterns.dart';
import 'package:intl/intl.dart';
import 'package:path/path.dart' as path;
import '../test/data_directory.dart';
void main() {
initializeDateFormatting('en_IGNORED', null);
writeSymbolData();
writePatternData();
writeLocaleList();
}
void writeLocaleList() {
var file = File(path.join(dataDirectory, 'locale_list.dart'));
var output = file.openWrite();
output.write(
'// 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');
output.write('final availableLocalesForDateFormatting = const [');
var allLocales = DateFormat.allLocalesWithSymbols();
for (var locale in allLocales) {
output.write("'$locale'");
if (locale == allLocales.last) {
output.write('];');
} else {
output.write(',\n ');
}
}
output.close();
}
void writeSymbolData() {
dateTimeSymbolMap().forEach(writeSymbols);
}
void writePatternData() {
dateTimePatternMap().forEach(writePatterns);
}
void writeSymbols(locale, symbols) {
var file = File(path.join(dataDirectory, 'symbols', '$locale.json'));
var output = file.openWrite();
writeToJSON(symbols, output);
output.close();
}
void writePatterns(locale, patterns) {
var file = File(path.join(dataDirectory, 'patterns', '$locale.json'));
file.openWrite()
..write(json.encode(patterns))
..close();
}
void writeToJSON(dynamic data, IOSink out) {
out.write(json.encode(data.serializeToMap()));
}