blob: cd0b9d2fed4b97774f2847bf0eb4c39bfa5ae05e [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.
library date_symbols;
/**
* This holds onto information about how a particular locale formats dates. It
* contains mostly strings, e.g. what the names of months or weekdays are,
* but also indicates things like the first day of the week. We expect the data
* for instances of these to be generated out of ICU or a similar reference
* source. This is used in conjunction with the date_time_patterns, which
* defines for a particular locale the different named formats that will
* make use of this data.
*/
class DateSymbols {
String NAME;
List<String> ERAS, ERANAMES, NARROWMONTHS, STANDALONENARROWMONTHS,
MONTHS, STANDALONEMONTHS, SHORTMONTHS, STANDALONESHORTMONTHS, WEEKDAYS,
STANDALONEWEEKDAYS, SHORTWEEKDAYS, STANDALONESHORTWEEKDAYS,
NARROWWEEKDAYS, STANDALONENARROWWEEKDAYS, SHORTQUARTERS,
QUARTERS, AMPMS, DATEFORMATS, TIMEFORMATS;
Map<String, String> AVAILABLEFORMATS;
int FIRSTDAYOFWEEK;
List<int> WEEKENDRANGE;
int FIRSTWEEKCUTOFFDAY;
DateSymbols({this.NAME,
this.ERAS,
this.ERANAMES,
this.NARROWMONTHS,
this.STANDALONENARROWMONTHS,
this.MONTHS,
this.STANDALONEMONTHS,
this.SHORTMONTHS,
this.STANDALONESHORTMONTHS,
this.WEEKDAYS,
this.STANDALONEWEEKDAYS,
this.SHORTWEEKDAYS,
this.STANDALONESHORTWEEKDAYS,
this.NARROWWEEKDAYS,
this.STANDALONENARROWWEEKDAYS,
this.SHORTQUARTERS,
this.QUARTERS,
this.AMPMS,
// TODO(alanknight): These formats are taken from Closure,
// where there's only a fixed set of available formats.
// Here we have the patterns separately. These should
// either be used, or removed.
this.DATEFORMATS,
this.TIMEFORMATS,
this.AVAILABLEFORMATS,
this.FIRSTDAYOFWEEK,
this.WEEKENDRANGE,
this.FIRSTWEEKCUTOFFDAY});
// TODO(alanknight): Replace this with use of a more general serialization
// facility once one is available. Issue 4926.
DateSymbols.deserializeFromMap(Map map) {
NAME = map["NAME"];
ERAS = map["ERAS"];
ERANAMES = map["ERANAMES"];
NARROWMONTHS = map["NARROWMONTHS"];
STANDALONENARROWMONTHS = map["STANDALONENARROWMONTHS"];
MONTHS = map["MONTHS"];
STANDALONEMONTHS = map["STANDALONEMONTHS"];
SHORTMONTHS = map["SHORTMONTHS"];
STANDALONESHORTMONTHS = map["STANDALONESHORTMONTHS"];
WEEKDAYS = map["WEEKDAYS"];
STANDALONEWEEKDAYS = map["STANDALONEWEEKDAYS"];
SHORTWEEKDAYS = map["SHORTWEEKDAYS"];
STANDALONESHORTWEEKDAYS = map["STANDALONESHORTWEEKDAYS"];
NARROWWEEKDAYS = map["NARROWWEEKDAYS"];
STANDALONENARROWWEEKDAYS = map["STANDALONENARROWWEEKDAYS"];
SHORTQUARTERS = map["SHORTQUARTERS"];
QUARTERS = map["QUARTERS"];
AMPMS = map["AMPMS"];
DATEFORMATS = map["DATEFORMATS"];
TIMEFORMATS = map["TIMEFORMATS"];
AVAILABLEFORMATS = map["AVAILABLEFORMATS"];
FIRSTDAYOFWEEK = map["FIRSTDAYOFWEEK"];
WEEKENDRANGE = map["WEEKENDRANGE"];
FIRSTWEEKCUTOFFDAY = map["FIRSTWEEKCUTOFFDAY"];
}
Map serializeToMap() {
var map = new Map();
map["NAME"] = NAME;
map["ERAS"] = ERAS;
map["ERANAMES"] = ERANAMES;
map["NARROWMONTHS"] = NARROWMONTHS;
map["STANDALONENARROWMONTHS"] = STANDALONENARROWMONTHS;
map["MONTHS"] = MONTHS;
map["STANDALONEMONTHS"] = STANDALONEMONTHS;
map["SHORTMONTHS"] = SHORTMONTHS;
map["STANDALONESHORTMONTHS"] = STANDALONESHORTMONTHS;
map["WEEKDAYS"] = WEEKDAYS;
map["STANDALONEWEEKDAYS"] = STANDALONEWEEKDAYS;
map["SHORTWEEKDAYS"] = SHORTWEEKDAYS;
map["STANDALONESHORTWEEKDAYS"] = STANDALONESHORTWEEKDAYS;
map["NARROWWEEKDAYS"] = NARROWWEEKDAYS;
map["STANDALONENARROWWEEKDAYS"] = STANDALONENARROWWEEKDAYS;
map["SHORTQUARTERS"] = SHORTQUARTERS;
map["QUARTERS"] = QUARTERS;
map["AMPMS"] = AMPMS;
map["DATEFORMATS"] = DATEFORMATS;
map["TIMEFORMATS"] = TIMEFORMATS;
map["AVAILABLEFORMATS"] = AVAILABLEFORMATS;
map["FIRSTDAYOFWEEK"] = FIRSTDAYOFWEEK;
map["WEEKENDRANGE"] = WEEKENDRANGE;
map["FIRSTWEEKCUTOFFDAY"] = FIRSTWEEKCUTOFFDAY;
return map;
}
toString() => NAME;
}
/**
* We hard-code the locale data for en_US here so that there's at least one
* locale always available.
*/
var en_USSymbols = new DateSymbols(
NAME: "en_US",
ERAS: const [ 'BC', 'AD'],
ERANAMES: const [ 'Before Christ', 'Anno Domini'],
NARROWMONTHS: const [ 'J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O',
'N', 'D'],
STANDALONENARROWMONTHS: const [ 'J', 'F', 'M', 'A', 'M', 'J', 'J', 'A',
'S', 'O', 'N', 'D'],
MONTHS: const [ 'January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November', 'December'],
STANDALONEMONTHS: const [ 'January', 'February', 'March', 'April', 'May',
'June', 'July', 'August', 'September', 'October', 'November',
'December'],
SHORTMONTHS: const [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul',
'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
STANDALONESHORTMONTHS: const [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
WEEKDAYS: const [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday'],
STANDALONEWEEKDAYS: const [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday', 'Saturday'],
SHORTWEEKDAYS: const [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
STANDALONESHORTWEEKDAYS: const [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri',
'Sat'],
NARROWWEEKDAYS: const [ 'S', 'M', 'T', 'W', 'T', 'F', 'S'],
STANDALONENARROWWEEKDAYS: const [ 'S', 'M', 'T', 'W', 'T', 'F', 'S'],
SHORTQUARTERS: const [ 'Q1', 'Q2', 'Q3', 'Q4'],
QUARTERS: const [ '1st quarter', '2nd quarter', '3rd quarter',
'4th quarter'],
AMPMS: const [ 'AM', 'PM'],
DATEFORMATS: const [ 'EEEE, MMMM d, y', 'MMMM d, y', 'MMM d, y',
'M/d/yy'],
TIMEFORMATS: const [ 'h:mm:ss a zzzz', 'h:mm:ss a z', 'h:mm:ss a',
'h:mm a'],
FIRSTDAYOFWEEK: 6,
WEEKENDRANGE: const [5, 6],
FIRSTWEEKCUTOFFDAY: 5);
var en_USPatterns = const {
'd': 'd', // DAY
'E': 'EEE', // ABBR_WEEKDAY
'EEEE': 'EEEE', // WEEKDAY
'LLL': 'LLL', // ABBR_STANDALONE_MONTH
'LLLL': 'LLLL', // STANDALONE_MONTH
'M': 'L', // NUM_MONTH
'Md': 'M/d', // NUM_MONTH_DAY
'MEd': 'EEE, M/d', // NUM_MONTH_WEEKDAY_DAY
'MMM': 'LLL', // ABBR_MONTH
'MMMd': 'MMM d', // ABBR_MONTH_DAY
'MMMEd': 'EEE, MMM d', // ABBR_MONTH_WEEKDAY_DAY
'MMMM': 'LLLL', // MONTH
'MMMMd': 'MMMM d', // MONTH_DAY
'MMMMEEEEd': 'EEEE, MMMM d', // MONTH_WEEKDAY_DAY
'QQQ': 'QQQ', // ABBR_QUARTER
'QQQQ': 'QQQQ', // QUARTER
'y': 'y', // YEAR
'yM': 'M/y', // YEAR_NUM_MONTH
'yMd': 'M/d/y', // YEAR_NUM_MONTH_DAY
'yMEd': 'EEE, M/d/y', // YEAR_NUM_MONTH_WEEKDAY_DAY
'yMMM': 'MMM y', // YEAR_ABBR_MONTH
'yMMMd': 'MMM d, y', // YEAR_ABBR_MONTH_DAY
'yMMMEd': 'EEE, MMM d, y', // YEAR_ABBR_MONTH_WEEKDAY_DAY
'yMMMM': 'MMMM y', // YEAR_MONTH
'yMMMMd': 'MMMM d, y', // YEAR_MONTH_DAY
'yMMMMEEEEd': 'EEEE, MMMM d, y', // YEAR_MONTH_WEEKDAY_DAY
'yQQQ': 'QQQ y', // YEAR_ABBR_QUARTER
'yQQQQ': 'QQQQ y', // YEAR_QUARTER
'H': 'HH', // HOUR24
'Hm': 'HH:mm', // HOUR24_MINUTE
'Hms': 'HH:mm:ss', // HOUR24_MINUTE_SECOND
'j': 'h a', // HOUR
'jm': 'h:mm a', // HOUR_MINUTE
'jms': 'h:mm:ss a', // HOUR_MINUTE_SECOND
'jmv': 'h:mm a v', // HOUR_MINUTE_GENERIC_TZ
'jmz': 'h:mm a z', // HOUR_MINUTETZ
'jz': 'h a z', // HOURGENERIC_TZ
'm': 'm', // MINUTE
'ms': 'mm:ss', // MINUTE_SECOND
's': 's', // SECOND
'v': 'v', // ABBR_GENERIC_TZ
'z': 'z', // ABBR_SPECIFIC_TZ
'zzzz': 'zzzz', // SPECIFIC_TZ
'ZZZZ': 'ZZZZ' // ABBR_UTC_TZ
};