Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Side by Side Diff: src/extensions/i18n/overrides.js

Issue 23414008: Revert "Snapshot i18n Javascript code" and "Fix mjsunit/debug-script after r16298". (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/extensions/i18n/number-format.js ('k') | src/flag-definitions.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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 // ECMAScript 402 API implementation is broken into separate files for
30 // each service. The build system combines them together into one
31 // Intl namespace.
32
33
34 // Save references to Intl objects and methods we use, for added security.
35 var savedObjects = {
36 'collator': Intl.Collator,
37 'numberformat': Intl.NumberFormat,
38 'dateformatall': Intl.DateTimeFormat,
39 'dateformatdate': Intl.DateTimeFormat,
40 'dateformattime': Intl.DateTimeFormat
41 };
42
43
44 // Default (created with undefined locales and options parameters) collator,
45 // number and date format instances. They'll be created as needed.
46 var defaultObjects = {
47 'collator': undefined,
48 'numberformat': undefined,
49 'dateformatall': undefined,
50 'dateformatdate': undefined,
51 'dateformattime': undefined,
52 };
53
54
55 /**
56 * Returns cached or newly created instance of a given service.
57 * We cache only default instances (where no locales or options are provided).
58 */
59 function cachedOrNewService(service, locales, options, defaults) {
60 var useOptions = (defaults === undefined) ? options : defaults;
61 if (locales === undefined && options === undefined) {
62 if (defaultObjects[service] === undefined) {
63 defaultObjects[service] = new savedObjects[service](locales, useOptions);
64 }
65 return defaultObjects[service];
66 }
67 return new savedObjects[service](locales, useOptions);
68 }
69
70
71 /**
72 * Compares this and that, and returns less than 0, 0 or greater than 0 value.
73 * Overrides the built-in method.
74 */
75 Object.defineProperty(String.prototype, 'localeCompare', {
76 value: function(that) {
77 if (%_IsConstructCall()) {
78 throw new TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
79 }
80
81 if (this === undefined || this === null) {
82 throw new TypeError('Method invoked on undefined or null value.');
83 }
84
85 var locales = arguments[1];
86 var options = arguments[2];
87 var collator = cachedOrNewService('collator', locales, options);
88 return compare(collator, this, that);
89 },
90 writable: true,
91 configurable: true,
92 enumerable: false
93 });
94 %FunctionSetName(String.prototype.localeCompare, 'localeCompare');
95 %FunctionRemovePrototype(String.prototype.localeCompare);
96 %SetNativeFlag(String.prototype.localeCompare);
97
98
99 /**
100 * Formats a Number object (this) using locale and options values.
101 * If locale or options are omitted, defaults are used.
102 */
103 Object.defineProperty(Number.prototype, 'toLocaleString', {
104 value: function() {
105 if (%_IsConstructCall()) {
106 throw new TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
107 }
108
109 if (!(this instanceof Number) && typeof(this) !== 'number') {
110 throw new TypeError('Method invoked on an object that is not Number.');
111 }
112
113 var locales = arguments[0];
114 var options = arguments[1];
115 var numberFormat = cachedOrNewService('numberformat', locales, options);
116 return formatNumber(numberFormat, this);
117 },
118 writable: true,
119 configurable: true,
120 enumerable: false
121 });
122 %FunctionSetName(Number.prototype.toLocaleString, 'toLocaleString');
123 %FunctionRemovePrototype(Number.prototype.toLocaleString);
124 %SetNativeFlag(Number.prototype.toLocaleString);
125
126
127 /**
128 * Returns actual formatted date or fails if date parameter is invalid.
129 */
130 function toLocaleDateTime(date, locales, options, required, defaults, service) {
131 if (!(date instanceof Date)) {
132 throw new TypeError('Method invoked on an object that is not Date.');
133 }
134
135 if (isNaN(date)) {
136 return 'Invalid Date';
137 }
138
139 var internalOptions = toDateTimeOptions(options, required, defaults);
140
141 var dateFormat =
142 cachedOrNewService(service, locales, options, internalOptions);
143
144 return formatDate(dateFormat, date);
145 }
146
147
148 /**
149 * Formats a Date object (this) using locale and options values.
150 * If locale or options are omitted, defaults are used - both date and time are
151 * present in the output.
152 */
153 Object.defineProperty(Date.prototype, 'toLocaleString', {
154 value: function() {
155 if (%_IsConstructCall()) {
156 throw new TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
157 }
158
159 var locales = arguments[0];
160 var options = arguments[1];
161 return toLocaleDateTime(
162 this, locales, options, 'any', 'all', 'dateformatall');
163 },
164 writable: true,
165 configurable: true,
166 enumerable: false
167 });
168 %FunctionSetName(Date.prototype.toLocaleString, 'toLocaleString');
169 %FunctionRemovePrototype(Date.prototype.toLocaleString);
170 %SetNativeFlag(Date.prototype.toLocaleString);
171
172
173 /**
174 * Formats a Date object (this) using locale and options values.
175 * If locale or options are omitted, defaults are used - only date is present
176 * in the output.
177 */
178 Object.defineProperty(Date.prototype, 'toLocaleDateString', {
179 value: function() {
180 if (%_IsConstructCall()) {
181 throw new TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
182 }
183
184 var locales = arguments[0];
185 var options = arguments[1];
186 return toLocaleDateTime(
187 this, locales, options, 'date', 'date', 'dateformatdate');
188 },
189 writable: true,
190 configurable: true,
191 enumerable: false
192 });
193 %FunctionSetName(Date.prototype.toLocaleDateString, 'toLocaleDateString');
194 %FunctionRemovePrototype(Date.prototype.toLocaleDateString);
195 %SetNativeFlag(Date.prototype.toLocaleDateString);
196
197
198 /**
199 * Formats a Date object (this) using locale and options values.
200 * If locale or options are omitted, defaults are used - only time is present
201 * in the output.
202 */
203 Object.defineProperty(Date.prototype, 'toLocaleTimeString', {
204 value: function() {
205 if (%_IsConstructCall()) {
206 throw new TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
207 }
208
209 var locales = arguments[0];
210 var options = arguments[1];
211 return toLocaleDateTime(
212 this, locales, options, 'time', 'time', 'dateformattime');
213 },
214 writable: true,
215 configurable: true,
216 enumerable: false
217 });
218 %FunctionSetName(Date.prototype.toLocaleTimeString, 'toLocaleTimeString');
219 %FunctionRemovePrototype(Date.prototype.toLocaleTimeString);
220 %SetNativeFlag(Date.prototype.toLocaleTimeString);
OLDNEW
« no previous file with comments | « src/extensions/i18n/number-format.js ('k') | src/flag-definitions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698