OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 library date_symbols; | |
5 | |
6 /** | |
7 * This holds onto information about how a particular locale formats dates. It | |
8 * contains mostly strings, e.g. what the names of months or weekdays are, | |
9 * but also indicates things like the first day of the week. We expect the data | |
10 * for instances of these to be generated out of ICU or a similar reference | |
11 * source. This is used in conjunction with the date_time_patterns, which | |
12 * defines for a particular locale the different named formats that will | |
13 * make use of this data. | |
14 */ | |
15 class DateSymbols { | |
16 String NAME; | |
17 List<String> ERAS, | |
18 ERANAMES, | |
19 NARROWMONTHS, | |
20 STANDALONENARROWMONTHS, | |
21 MONTHS, | |
22 STANDALONEMONTHS, | |
23 SHORTMONTHS, | |
24 STANDALONESHORTMONTHS, | |
25 WEEKDAYS, | |
26 STANDALONEWEEKDAYS, | |
27 SHORTWEEKDAYS, | |
28 STANDALONESHORTWEEKDAYS, | |
29 NARROWWEEKDAYS, | |
30 STANDALONENARROWWEEKDAYS, | |
31 SHORTQUARTERS, | |
32 QUARTERS, | |
33 AMPMS, | |
34 DATEFORMATS, | |
35 TIMEFORMATS, | |
36 DATETIMEFORMATS; | |
37 Map<String, String> AVAILABLEFORMATS; | |
38 int FIRSTDAYOFWEEK; | |
39 List<int> WEEKENDRANGE; | |
40 int FIRSTWEEKCUTOFFDAY; | |
41 | |
42 DateSymbols({this.NAME, this.ERAS, this.ERANAMES, this.NARROWMONTHS, | |
43 this.STANDALONENARROWMONTHS, this.MONTHS, this.STANDALONEMONTHS, | |
44 this.SHORTMONTHS, this.STANDALONESHORTMONTHS, this.WEEKDAYS, | |
45 this.STANDALONEWEEKDAYS, this.SHORTWEEKDAYS, this.STANDALONESHORTWEEKDAYS, | |
46 this.NARROWWEEKDAYS, this.STANDALONENARROWWEEKDAYS, this.SHORTQUARTERS, | |
47 this.QUARTERS, this.AMPMS, | |
48 // TODO(alanknight): These formats are taken from Closure, | |
49 // where there's only a fixed set of available formats. | |
50 // Here we have the patterns separately. These should | |
51 // either be used, or removed. | |
52 this.DATEFORMATS, this.TIMEFORMATS, this.AVAILABLEFORMATS, | |
53 this.FIRSTDAYOFWEEK, this.WEEKENDRANGE, this.FIRSTWEEKCUTOFFDAY, | |
54 this.DATETIMEFORMATS}); | |
55 | |
56 // TODO(alanknight): Replace this with use of a more general serialization | |
57 // facility once one is available. Issue 4926. | |
58 DateSymbols.deserializeFromMap(Map map) { | |
59 NAME = map["NAME"]; | |
60 ERAS = map["ERAS"]; | |
61 ERANAMES = map["ERANAMES"]; | |
62 NARROWMONTHS = map["NARROWMONTHS"]; | |
63 STANDALONENARROWMONTHS = map["STANDALONENARROWMONTHS"]; | |
64 MONTHS = map["MONTHS"]; | |
65 STANDALONEMONTHS = map["STANDALONEMONTHS"]; | |
66 SHORTMONTHS = map["SHORTMONTHS"]; | |
67 STANDALONESHORTMONTHS = map["STANDALONESHORTMONTHS"]; | |
68 WEEKDAYS = map["WEEKDAYS"]; | |
69 STANDALONEWEEKDAYS = map["STANDALONEWEEKDAYS"]; | |
70 SHORTWEEKDAYS = map["SHORTWEEKDAYS"]; | |
71 STANDALONESHORTWEEKDAYS = map["STANDALONESHORTWEEKDAYS"]; | |
72 NARROWWEEKDAYS = map["NARROWWEEKDAYS"]; | |
73 STANDALONENARROWWEEKDAYS = map["STANDALONENARROWWEEKDAYS"]; | |
74 SHORTQUARTERS = map["SHORTQUARTERS"]; | |
75 QUARTERS = map["QUARTERS"]; | |
76 AMPMS = map["AMPMS"]; | |
77 DATEFORMATS = map["DATEFORMATS"]; | |
78 TIMEFORMATS = map["TIMEFORMATS"]; | |
79 AVAILABLEFORMATS = map["AVAILABLEFORMATS"]; | |
80 FIRSTDAYOFWEEK = map["FIRSTDAYOFWEEK"]; | |
81 WEEKENDRANGE = map["WEEKENDRANGE"]; | |
82 FIRSTWEEKCUTOFFDAY = map["FIRSTWEEKCUTOFFDAY"]; | |
83 DATETIMEFORMATS = map["DATETIMEFORAMTS"]; | |
84 } | |
85 | |
86 Map serializeToMap() => { | |
87 "NAME": NAME, | |
88 "ERAS": ERAS, | |
89 "ERANAMES": ERANAMES, | |
90 "NARROWMONTHS": NARROWMONTHS, | |
91 "STANDALONENARROWMONTHS": STANDALONENARROWMONTHS, | |
92 "MONTHS": MONTHS, | |
93 "STANDALONEMONTHS": STANDALONEMONTHS, | |
94 "SHORTMONTHS": SHORTMONTHS, | |
95 "STANDALONESHORTMONTHS": STANDALONESHORTMONTHS, | |
96 "WEEKDAYS": WEEKDAYS, | |
97 "STANDALONEWEEKDAYS": STANDALONEWEEKDAYS, | |
98 "SHORTWEEKDAYS": SHORTWEEKDAYS, | |
99 "STANDALONESHORTWEEKDAYS": STANDALONESHORTWEEKDAYS, | |
100 "NARROWWEEKDAYS": NARROWWEEKDAYS, | |
101 "STANDALONENARROWWEEKDAYS": STANDALONENARROWWEEKDAYS, | |
102 "SHORTQUARTERS": SHORTQUARTERS, | |
103 "QUARTERS": QUARTERS, | |
104 "AMPMS": AMPMS, | |
105 "DATEFORMATS": DATEFORMATS, | |
106 "TIMEFORMATS": TIMEFORMATS, | |
107 "AVAILABLEFORMATS": AVAILABLEFORMATS, | |
108 "FIRSTDAYOFWEEK": FIRSTDAYOFWEEK, | |
109 "WEEKENDRANGE": WEEKENDRANGE, | |
110 "FIRSTWEEKCUTOFFDAY": FIRSTWEEKCUTOFFDAY, | |
111 "DATETIMEFORMATS": DATETIMEFORMATS, | |
112 }; | |
113 | |
114 toString() => NAME; | |
115 } | |
116 | |
117 /** | |
118 * We hard-code the locale data for en_US here so that there's at least one | |
119 * locale always available. | |
120 */ | |
121 var en_USSymbols = new DateSymbols( | |
122 NAME: "en_US", | |
123 ERAS: const ['BC', 'AD'], | |
124 ERANAMES: const ['Before Christ', 'Anno Domini'], | |
125 NARROWMONTHS: const [ | |
126 'J', | |
127 'F', | |
128 'M', | |
129 'A', | |
130 'M', | |
131 'J', | |
132 'J', | |
133 'A', | |
134 'S', | |
135 'O', | |
136 'N', | |
137 'D' | |
138 ], | |
139 STANDALONENARROWMONTHS: const [ | |
140 'J', | |
141 'F', | |
142 'M', | |
143 'A', | |
144 'M', | |
145 'J', | |
146 'J', | |
147 'A', | |
148 'S', | |
149 'O', | |
150 'N', | |
151 'D' | |
152 ], | |
153 MONTHS: const [ | |
154 'January', | |
155 'February', | |
156 'March', | |
157 'April', | |
158 'May', | |
159 'June', | |
160 'July', | |
161 'August', | |
162 'September', | |
163 'October', | |
164 'November', | |
165 'December' | |
166 ], | |
167 STANDALONEMONTHS: const [ | |
168 'January', | |
169 'February', | |
170 'March', | |
171 'April', | |
172 'May', | |
173 'June', | |
174 'July', | |
175 'August', | |
176 'September', | |
177 'October', | |
178 'November', | |
179 'December' | |
180 ], | |
181 SHORTMONTHS: const [ | |
182 'Jan', | |
183 'Feb', | |
184 'Mar', | |
185 'Apr', | |
186 'May', | |
187 'Jun', | |
188 'Jul', | |
189 'Aug', | |
190 'Sep', | |
191 'Oct', | |
192 'Nov', | |
193 'Dec' | |
194 ], | |
195 STANDALONESHORTMONTHS: const [ | |
196 'Jan', | |
197 'Feb', | |
198 'Mar', | |
199 'Apr', | |
200 'May', | |
201 'Jun', | |
202 'Jul', | |
203 'Aug', | |
204 'Sep', | |
205 'Oct', | |
206 'Nov', | |
207 'Dec' | |
208 ], | |
209 WEEKDAYS: const [ | |
210 'Sunday', | |
211 'Monday', | |
212 'Tuesday', | |
213 'Wednesday', | |
214 'Thursday', | |
215 'Friday', | |
216 'Saturday' | |
217 ], | |
218 STANDALONEWEEKDAYS: const [ | |
219 'Sunday', | |
220 'Monday', | |
221 'Tuesday', | |
222 'Wednesday', | |
223 'Thursday', | |
224 'Friday', | |
225 'Saturday' | |
226 ], | |
227 SHORTWEEKDAYS: const ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], | |
228 STANDALONESHORTWEEKDAYS: const [ | |
229 'Sun', | |
230 'Mon', | |
231 'Tue', | |
232 'Wed', | |
233 'Thu', | |
234 'Fri', | |
235 'Sat' | |
236 ], | |
237 NARROWWEEKDAYS: const ['S', 'M', 'T', 'W', 'T', 'F', 'S'], | |
238 STANDALONENARROWWEEKDAYS: const ['S', 'M', 'T', 'W', 'T', 'F', 'S'], | |
239 SHORTQUARTERS: const ['Q1', 'Q2', 'Q3', 'Q4'], | |
240 QUARTERS: const [ | |
241 '1st quarter', | |
242 '2nd quarter', | |
243 '3rd quarter', | |
244 '4th quarter' | |
245 ], | |
246 AMPMS: const ['AM', 'PM'], | |
247 DATEFORMATS: const ['EEEE, MMMM d, y', 'MMMM d, y', 'MMM d, y', 'M/d/yy'], | |
248 TIMEFORMATS: const ['h:mm:ss a zzzz', 'h:mm:ss a z', 'h:mm:ss a', 'h:mm a'], | |
249 FIRSTDAYOFWEEK: 6, | |
250 WEEKENDRANGE: const [5, 6], | |
251 FIRSTWEEKCUTOFFDAY: 5, | |
252 DATETIMEFORMATS: const [ | |
253 '{1} \'at\' {0}', | |
254 '{1} \'at\' {0}', | |
255 '{1}, {0}', | |
256 '{1}, {0}' | |
257 ]); | |
258 | |
259 var en_USPatterns = const { | |
260 'd': 'd', // DAY | |
261 'E': 'EEE', // ABBR_WEEKDAY | |
262 'EEEE': 'EEEE', // WEEKDAY | |
263 'LLL': 'LLL', // ABBR_STANDALONE_MONTH | |
264 'LLLL': 'LLLL', // STANDALONE_MONTH | |
265 'M': 'L', // NUM_MONTH | |
266 'Md': 'M/d', // NUM_MONTH_DAY | |
267 'MEd': 'EEE, M/d', // NUM_MONTH_WEEKDAY_DAY | |
268 'MMM': 'LLL', // ABBR_MONTH | |
269 'MMMd': 'MMM d', // ABBR_MONTH_DAY | |
270 'MMMEd': 'EEE, MMM d', // ABBR_MONTH_WEEKDAY_DAY | |
271 'MMMM': 'LLLL', // MONTH | |
272 'MMMMd': 'MMMM d', // MONTH_DAY | |
273 'MMMMEEEEd': 'EEEE, MMMM d', // MONTH_WEEKDAY_DAY | |
274 'QQQ': 'QQQ', // ABBR_QUARTER | |
275 'QQQQ': 'QQQQ', // QUARTER | |
276 'y': 'y', // YEAR | |
277 'yM': 'M/y', // YEAR_NUM_MONTH | |
278 'yMd': 'M/d/y', // YEAR_NUM_MONTH_DAY | |
279 'yMEd': 'EEE, M/d/y', // YEAR_NUM_MONTH_WEEKDAY_DAY | |
280 'yMMM': 'MMM y', // YEAR_ABBR_MONTH | |
281 'yMMMd': 'MMM d, y', // YEAR_ABBR_MONTH_DAY | |
282 'yMMMEd': 'EEE, MMM d, y', // YEAR_ABBR_MONTH_WEEKDAY_DAY | |
283 'yMMMM': 'MMMM y', // YEAR_MONTH | |
284 'yMMMMd': 'MMMM d, y', // YEAR_MONTH_DAY | |
285 'yMMMMEEEEd': 'EEEE, MMMM d, y', // YEAR_MONTH_WEEKDAY_DAY | |
286 'yQQQ': 'QQQ y', // YEAR_ABBR_QUARTER | |
287 'yQQQQ': 'QQQQ y', // YEAR_QUARTER | |
288 'H': 'HH', // HOUR24 | |
289 'Hm': 'HH:mm', // HOUR24_MINUTE | |
290 'Hms': 'HH:mm:ss', // HOUR24_MINUTE_SECOND | |
291 'j': 'h a', // HOUR | |
292 'jm': 'h:mm a', // HOUR_MINUTE | |
293 'jms': 'h:mm:ss a', // HOUR_MINUTE_SECOND | |
294 'jmv': 'h:mm a v', // HOUR_MINUTE_GENERIC_TZ | |
295 'jmz': 'h:mm a z', // HOUR_MINUTETZ | |
296 'jz': 'h a z', // HOURGENERIC_TZ | |
297 'm': 'm', // MINUTE | |
298 'ms': 'mm:ss', // MINUTE_SECOND | |
299 's': 's', // SECOND | |
300 'v': 'v', // ABBR_GENERIC_TZ | |
301 'z': 'z', // ABBR_SPECIFIC_TZ | |
302 'zzzz': 'zzzz', // SPECIFIC_TZ | |
303 'ZZZZ': 'ZZZZ' // ABBR_UTC_TZ | |
304 }; | |
OLD | NEW |