blob: bbded505a5092bf2098fa4d3532c2d5503837653 [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,
DATETIMEFORMATS;
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,
this.DATETIMEFORMATS});
// 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"];
DATETIMEFORMATS = map["DATETIMEFORAMTS"];
}
Map serializeToMap() => {
"NAME": NAME,
"ERAS": ERAS,
"ERANAMES": ERANAMES,
"NARROWMONTHS": NARROWMONTHS,
"STANDALONENARROWMONTHS": STANDALONENARROWMONTHS,
"MONTHS": MONTHS,
"STANDALONEMONTHS": STANDALONEMONTHS,
"SHORTMONTHS": SHORTMONTHS,
"STANDALONESHORTMONTHS": STANDALONESHORTMONTHS,
"WEEKDAYS": WEEKDAYS,
"STANDALONEWEEKDAYS": STANDALONEWEEKDAYS,
"SHORTWEEKDAYS": SHORTWEEKDAYS,
"STANDALONESHORTWEEKDAYS": STANDALONESHORTWEEKDAYS,
"NARROWWEEKDAYS": NARROWWEEKDAYS,
"STANDALONENARROWWEEKDAYS": STANDALONENARROWWEEKDAYS,
"SHORTQUARTERS": SHORTQUARTERS,
"QUARTERS": QUARTERS,
"AMPMS": AMPMS,
"DATEFORMATS": DATEFORMATS,
"TIMEFORMATS": TIMEFORMATS,
"AVAILABLEFORMATS": AVAILABLEFORMATS,
"FIRSTDAYOFWEEK": FIRSTDAYOFWEEK,
"WEEKENDRANGE": WEEKENDRANGE,
"FIRSTWEEKCUTOFFDAY": FIRSTWEEKCUTOFFDAY,
"DATETIMEFORMATS": DATETIMEFORMATS,
};
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,
DATETIMEFORMATS: const [
'{1} \'at\' {0}',
'{1} \'at\' {0}',
'{1}, {0}',
'{1}, {0}'
]);
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
};