| // 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); |
| } |