OLD | NEW |
| (Empty) |
1 // Copyright 2013 the V8 project authors. All rights reserved. | |
2 // Redistribution and use in source and binary forms, with or without | |
3 // modification, are permitted provided that the following conditions are | |
4 // met: | |
5 // | |
6 // * Redistributions of source code must retain the above copyright | |
7 // notice, this list of conditions and the following disclaimer. | |
8 // * Redistributions in binary form must reproduce the above | |
9 // copyright notice, this list of conditions and the following | |
10 // disclaimer in the documentation and/or other materials provided | |
11 // with the distribution. | |
12 // * Neither the name of Google Inc. nor the names of its | |
13 // contributors may be used to endorse or promote products derived | |
14 // from this software without specific prior written permission. | |
15 // | |
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
27 // limitations under the License. | |
28 | |
29 | |
30 /** | |
31 * List of available services. | |
32 */ | |
33 var AVAILABLE_SERVICES = ['collator', | |
34 'numberformat', | |
35 'dateformat', | |
36 'breakiterator']; | |
37 | |
38 /** | |
39 * Caches available locales for each service. | |
40 */ | |
41 var AVAILABLE_LOCALES = { | |
42 'collator': undefined, | |
43 'numberformat': undefined, | |
44 'dateformat': undefined, | |
45 'breakiterator': undefined | |
46 }; | |
47 | |
48 /** | |
49 * Caches default ICU locale. | |
50 */ | |
51 var DEFAULT_ICU_LOCALE = undefined; | |
52 | |
53 /** | |
54 * Unicode extension regular expression. | |
55 */ | |
56 var UNICODE_EXTENSION_RE = new RegExp('-u(-[a-z0-9]{2,8})+', 'g'); | |
57 | |
58 /** | |
59 * Matches any Unicode extension. | |
60 */ | |
61 var ANY_EXTENSION_RE = new RegExp('-[a-z0-9]{1}-.*', 'g'); | |
62 | |
63 /** | |
64 * Replace quoted text (single quote, anything but the quote and quote again). | |
65 */ | |
66 var QUOTED_STRING_RE = new RegExp("'[^']+'", 'g'); | |
67 | |
68 /** | |
69 * Matches valid service name. | |
70 */ | |
71 var SERVICE_RE = | |
72 new RegExp('^(collator|numberformat|dateformat|breakiterator)$'); | |
73 | |
74 /** | |
75 * Validates a language tag against bcp47 spec. | |
76 * Actual value is assigned on first run. | |
77 */ | |
78 var LANGUAGE_TAG_RE = undefined; | |
79 | |
80 /** | |
81 * Helps find duplicate variants in the language tag. | |
82 */ | |
83 var LANGUAGE_VARIANT_RE = undefined; | |
84 | |
85 /** | |
86 * Helps find duplicate singletons in the language tag. | |
87 */ | |
88 var LANGUAGE_SINGLETON_RE = undefined; | |
89 | |
90 /** | |
91 * Matches valid IANA time zone names. | |
92 */ | |
93 var TIMEZONE_NAME_CHECK_RE = | |
94 new RegExp('^([A-Za-z]+)/([A-Za-z]+)(?:_([A-Za-z]+))*$'); | |
95 | |
96 /** | |
97 * Maps ICU calendar names into LDML type. | |
98 */ | |
99 var ICU_CALENDAR_MAP = { | |
100 'gregorian': 'gregory', | |
101 'japanese': 'japanese', | |
102 'buddhist': 'buddhist', | |
103 'roc': 'roc', | |
104 'persian': 'persian', | |
105 'islamic-civil': 'islamicc', | |
106 'islamic': 'islamic', | |
107 'hebrew': 'hebrew', | |
108 'chinese': 'chinese', | |
109 'indian': 'indian', | |
110 'coptic': 'coptic', | |
111 'ethiopic': 'ethiopic', | |
112 'ethiopic-amete-alem': 'ethioaa' | |
113 }; | |
114 | |
115 /** | |
116 * Map of Unicode extensions to option properties, and their values and types, | |
117 * for a collator. | |
118 */ | |
119 var COLLATOR_KEY_MAP = { | |
120 'kn': {'property': 'numeric', 'type': 'boolean'}, | |
121 'kf': {'property': 'caseFirst', 'type': 'string', | |
122 'values': ['false', 'lower', 'upper']} | |
123 }; | |
124 | |
125 /** | |
126 * Map of Unicode extensions to option properties, and their values and types, | |
127 * for a number format. | |
128 */ | |
129 var NUMBER_FORMAT_KEY_MAP = { | |
130 'nu': {'property': undefined, 'type': 'string'} | |
131 }; | |
132 | |
133 /** | |
134 * Map of Unicode extensions to option properties, and their values and types, | |
135 * for a date/time format. | |
136 */ | |
137 var DATETIME_FORMAT_KEY_MAP = { | |
138 'ca': {'property': undefined, 'type': 'string'}, | |
139 'nu': {'property': undefined, 'type': 'string'} | |
140 }; | |
141 | |
142 /** | |
143 * Allowed -u-co- values. List taken from: | |
144 * http://unicode.org/repos/cldr/trunk/common/bcp47/collation.xml | |
145 */ | |
146 var ALLOWED_CO_VALUES = [ | |
147 'big5han', 'dict', 'direct', 'ducet', 'gb2312', 'phonebk', 'phonetic', | |
148 'pinyin', 'reformed', 'searchjl', 'stroke', 'trad', 'unihan', 'zhuyin' | |
149 ]; | |
150 | |
151 /** | |
152 * Object attributes (configurable, writable, enumerable). | |
153 * To combine attributes, OR them. | |
154 * Values/names are copied from v8/include/v8.h:PropertyAttribute | |
155 */ | |
156 var ATTRIBUTES = { | |
157 'NONE': 0, | |
158 'READ_ONLY': 1, | |
159 'DONT_ENUM': 2, | |
160 'DONT_DELETE': 4 | |
161 }; | |
162 | |
163 /** | |
164 * Error message for when function object is created with new and it's not | |
165 * a constructor. | |
166 */ | |
167 var ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR = | |
168 'Function object that\'s not a constructor was created with new'; | |
OLD | NEW |