blob: ddb7aadae36f1993676bd22d3f92d5d9a051860f [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.
/**
* This contains internal implementation details of the date formatting code
* which are exposed as public functions because they must be called by other
* libraries in order to configure the source for the locale data. We don't want
* them exposed as public API functions in the date formatting library, so they
* are put in a separate library here. These are for internal use only. User
* code should import one of the `date_symbol_data...` libraries and call the
* `initializeDateFormatting` method exposed there.
*/
library date_format_internal;
import 'dart:async';
import 'intl_helpers.dart';
import '../date_symbols.dart';
/**
* This holds the symbols to be used for date/time formatting, indexed
* by locale. Note that it will be set differently during initialization,
* depending on what implementation we are using. By default, it is initialized
* to an instance of UninitializedLocaleData, so any attempt to use it will
* result in an informative error message.
*/
var dateTimeSymbols = new UninitializedLocaleData(
'initializeDateFormatting(<locale>)', en_USSymbols);
/**
* This holds the patterns used for date/time formatting, indexed
* by locale. Note that it will be set differently during initialization,
* depending on what implementation we are using. By default, it is initialized
* to an instance of UninitializedLocaleData, so any attempt to use it will
* result in an informative error message.
*/
var dateTimePatterns = new UninitializedLocaleData(
'initializeDateFormatting(<locale>)', en_USPatterns);
/**
* Initialize the symbols dictionary. This should be passed a function that
* creates and returns the symbol data. We take a function so that if
* initializing the data is an expensive operation it need only be done once,
* no matter how many times this method is called.
*/
void initializeDateSymbols(Function symbols) {
if (dateTimeSymbols is UninitializedLocaleData) {
dateTimeSymbols = symbols();
}
}
/**
* Initialize the patterns dictionary. This should be passed a function that
* creates and returns the pattern data. We take a function so that if
* initializing the data is an expensive operation it need only be done once,
* no matter how many times this method is called.
*/
void initializeDatePatterns(Function patterns) {
if (dateTimePatterns is UninitializedLocaleData) {
dateTimePatterns = patterns();
}
}
Future initializeIndividualLocaleDateFormatting(Function init) {
return init(dateTimeSymbols, dateTimePatterns);
}