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

Side by Side Diff: src/i18n.js

Issue 1096763003: Small polishing changes to the native js. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 8 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
« no previous file with comments | « no previous file | src/macros.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // ECMAScript 402 API implementation. 5 // ECMAScript 402 API implementation.
6 6
7 /** 7 /**
8 * Intl object is a single object that has some named properties, 8 * Intl object is a single object that has some named properties,
9 * all of which are constructors. 9 * all of which are constructors.
10 */ 10 */
11 (function() { 11 (function() {
12 12
13 "use strict"; 13 "use strict";
14 14
15 %CheckIsBootstrapping(); 15 %CheckIsBootstrapping();
16 16
17 var GlobalBoolean = global.Boolean;
17 var GlobalDate = global.Date; 18 var GlobalDate = global.Date;
19 var GlobalNumber = global.Number;
18 var GlobalRegExp = global.RegExp; 20 var GlobalRegExp = global.RegExp;
19 var GlobalString = global.String; 21 var GlobalString = global.String;
20 22
21 var undefined = global.undefined; 23 var undefined = global.undefined;
22 24
23 var Intl = {}; 25 var Intl = {};
24 26
25 %AddNamedProperty(global, "Intl", Intl, DONT_ENUM); 27 %AddNamedProperty(global, "Intl", Intl, DONT_ENUM);
26 28
27 var AVAILABLE_SERVICES = ['collator', 29 var AVAILABLE_SERVICES = ['collator',
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
367 if (options === undefined) { 369 if (options === undefined) {
368 throw new $Error('Internal ' + caller + ' error. ' + 370 throw new $Error('Internal ' + caller + ' error. ' +
369 'Default options are missing.'); 371 'Default options are missing.');
370 } 372 }
371 373
372 var getOption = function getOption(property, type, values, defaultValue) { 374 var getOption = function getOption(property, type, values, defaultValue) {
373 if (options[property] !== undefined) { 375 if (options[property] !== undefined) {
374 var value = options[property]; 376 var value = options[property];
375 switch (type) { 377 switch (type) {
376 case 'boolean': 378 case 'boolean':
377 value = $Boolean(value); 379 value = GlobalBoolean(value);
378 break; 380 break;
379 case 'string': 381 case 'string':
380 value = GlobalString(value); 382 value = GlobalString(value);
381 break; 383 break;
382 case 'number': 384 case 'number':
383 value = $Number(value); 385 value = GlobalNumber(value);
384 break; 386 break;
385 default: 387 default:
386 throw new $Error('Internal error. Wrong value type.'); 388 throw new $Error('Internal error. Wrong value type.');
387 } 389 }
388 if (values !== undefined && values.indexOf(value) === -1) { 390 if (values !== undefined && values.indexOf(value) === -1) {
389 throw new $RangeError('Value ' + value + ' out of range for ' + caller + 391 throw new $RangeError('Value ' + value + ' out of range for ' + caller +
390 ' options property ' + property); 392 ' options property ' + property);
391 } 393 }
392 394
393 return value; 395 return value;
(...skipping 655 matching lines...) Expand 10 before | Expand all | Expand 10 after
1049 } 1051 }
1050 1052
1051 1053
1052 /** 1054 /**
1053 * Returns the valid digit count for a property, or throws RangeError on 1055 * Returns the valid digit count for a property, or throws RangeError on
1054 * a value out of the range. 1056 * a value out of the range.
1055 */ 1057 */
1056 function getNumberOption(options, property, min, max, fallback) { 1058 function getNumberOption(options, property, min, max, fallback) {
1057 var value = options[property]; 1059 var value = options[property];
1058 if (value !== undefined) { 1060 if (value !== undefined) {
1059 value = $Number(value); 1061 value = GlobalNumber(value);
1060 if ($isNaN(value) || value < min || value > max) { 1062 if ($isNaN(value) || value < min || value > max) {
1061 throw new $RangeError(property + ' value is out of range.'); 1063 throw new $RangeError(property + ' value is out of range.');
1062 } 1064 }
1063 return $floor(value); 1065 return $floor(value);
1064 } 1066 }
1065 1067
1066 return fallback; 1068 return fallback;
1067 } 1069 }
1068 1070
1069 1071
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 %SetNativeFlag(Intl.NumberFormat.supportedLocalesOf); 1267 %SetNativeFlag(Intl.NumberFormat.supportedLocalesOf);
1266 1268
1267 1269
1268 /** 1270 /**
1269 * Returns a String value representing the result of calling ToNumber(value) 1271 * Returns a String value representing the result of calling ToNumber(value)
1270 * according to the effective locale and the formatting options of this 1272 * according to the effective locale and the formatting options of this
1271 * NumberFormat. 1273 * NumberFormat.
1272 */ 1274 */
1273 function formatNumber(formatter, value) { 1275 function formatNumber(formatter, value) {
1274 // Spec treats -0 and +0 as 0. 1276 // Spec treats -0 and +0 as 0.
1275 var number = $Number(value) + 0; 1277 var number = GlobalNumber(value) + 0;
1276 1278
1277 return %InternalNumberFormat(%GetImplFromInitializedIntlObject(formatter), 1279 return %InternalNumberFormat(%GetImplFromInitializedIntlObject(formatter),
1278 number); 1280 number);
1279 } 1281 }
1280 1282
1281 1283
1282 /** 1284 /**
1283 * Returns a Number that represents string value that was passed in. 1285 * Returns a Number that represents string value that was passed in.
1284 */ 1286 */
1285 function parseNumber(formatter, value) { 1287 function parseNumber(formatter, value) {
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after
1661 /** 1663 /**
1662 * Returns a String value representing the result of calling ToNumber(date) 1664 * Returns a String value representing the result of calling ToNumber(date)
1663 * according to the effective locale and the formatting options of this 1665 * according to the effective locale and the formatting options of this
1664 * DateTimeFormat. 1666 * DateTimeFormat.
1665 */ 1667 */
1666 function formatDate(formatter, dateValue) { 1668 function formatDate(formatter, dateValue) {
1667 var dateMs; 1669 var dateMs;
1668 if (dateValue === undefined) { 1670 if (dateValue === undefined) {
1669 dateMs = GlobalDate.now(); 1671 dateMs = GlobalDate.now();
1670 } else { 1672 } else {
1671 dateMs = $Number(dateValue); 1673 dateMs = GlobalNumber(dateValue);
1672 } 1674 }
1673 1675
1674 if (!$isFinite(dateMs)) { 1676 if (!$isFinite(dateMs)) {
1675 throw new $RangeError('Provided date is not in valid range.'); 1677 throw new $RangeError('Provided date is not in valid range.');
1676 } 1678 }
1677 1679
1678 return %InternalDateFormat(%GetImplFromInitializedIntlObject(formatter), 1680 return %InternalDateFormat(%GetImplFromInitializedIntlObject(formatter),
1679 new GlobalDate(dateMs)); 1681 new GlobalDate(dateMs));
1680 } 1682 }
1681 1683
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
1973 1975
1974 return %StringNormalize(this, normalizationForm); 1976 return %StringNormalize(this, normalizationForm);
1975 } 1977 }
1976 ); 1978 );
1977 1979
1978 1980
1979 /** 1981 /**
1980 * Formats a Number object (this) using locale and options values. 1982 * Formats a Number object (this) using locale and options values.
1981 * If locale or options are omitted, defaults are used. 1983 * If locale or options are omitted, defaults are used.
1982 */ 1984 */
1983 OverrideFunction($Number.prototype, 'toLocaleString', function() { 1985 OverrideFunction(GlobalNumber.prototype, 'toLocaleString', function() {
1984 if (%_IsConstructCall()) { 1986 if (%_IsConstructCall()) {
1985 throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR); 1987 throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
1986 } 1988 }
1987 1989
1988 if (!(this instanceof $Number) && typeof(this) !== 'number') { 1990 if (!(this instanceof GlobalNumber) && typeof(this) !== 'number') {
1989 throw new $TypeError('Method invoked on an object that is not Number.'); 1991 throw new $TypeError('Method invoked on an object that is not Number.');
1990 } 1992 }
1991 1993
1992 var locales = %_Arguments(0); 1994 var locales = %_Arguments(0);
1993 var options = %_Arguments(1); 1995 var options = %_Arguments(1);
1994 var numberFormat = cachedOrNewService('numberformat', locales, options); 1996 var numberFormat = cachedOrNewService('numberformat', locales, options);
1995 return formatNumber(numberFormat, this); 1997 return formatNumber(numberFormat, this);
1996 } 1998 }
1997 ); 1999 );
1998 2000
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
2065 } 2067 }
2066 2068
2067 var locales = %_Arguments(0); 2069 var locales = %_Arguments(0);
2068 var options = %_Arguments(1); 2070 var options = %_Arguments(1);
2069 return toLocaleDateTime( 2071 return toLocaleDateTime(
2070 this, locales, options, 'time', 'time', 'dateformattime'); 2072 this, locales, options, 'time', 'time', 'dateformattime');
2071 } 2073 }
2072 ); 2074 );
2073 2075
2074 })(); 2076 })();
OLDNEW
« no previous file with comments | « no previous file | src/macros.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698