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