blob: 5e206f634d6f4a1d161c03af6fb01fc77014b53c [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 file should be imported, along with date_format.dart in order to read
* locale data via http requests to a web server..
*/
library date_symbol_data_http_request;
import 'dart:async';
import 'date_symbols.dart';
import 'intl.dart';
import 'src/data/dates/locale_list.dart';
import 'src/date_format_internal.dart';
import 'src/http_request_data_reader.dart';
import 'src/lazy_locale_data.dart';
export 'src/data/dates/locale_list.dart';
/**
* This should be called for at least one [locale] before any date formatting
* methods are called. It sets up the lookup for date symbols using [url].
* The [url] parameter should end with a "/". For example,
* "http://localhost:8000/dates/"
*/
Future initializeDateFormatting(String locale, String url) {
var reader = new HttpRequestDataReader('${url}symbols/');
initializeDateSymbols(() => new LazyLocaleData(
reader, _createDateSymbol, availableLocalesForDateFormatting));
var reader2 = new HttpRequestDataReader('${url}patterns/');
initializeDatePatterns(() =>
new LazyLocaleData(reader2, (x) => x, availableLocalesForDateFormatting));
var actualLocale = Intl.verifiedLocale(
locale, (l) => availableLocalesForDateFormatting.contains(l));
return initializeIndividualLocaleDateFormatting((symbols, patterns) {
return Future.wait(
[symbols.initLocale(actualLocale), patterns.initLocale(actualLocale)]);
});
}
/** Defines how new date symbol entries are created. */
DateSymbols _createDateSymbol(Map map) =>
new DateSymbols.deserializeFromMap(map);