| OLD | NEW | 
|---|
| 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  */ | 
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 247           // DateTimeFormat.format needs to be 0 arg method, but can stil | 247           // DateTimeFormat.format needs to be 0 arg method, but can stil | 
| 248           // receive optional dateValue param. If one was provided, pass it | 248           // receive optional dateValue param. If one was provided, pass it | 
| 249           // along. | 249           // along. | 
| 250           if (%_ArgumentsLength() > 0) { | 250           if (%_ArgumentsLength() > 0) { | 
| 251             return implementation(that, %_Arguments(0)); | 251             return implementation(that, %_Arguments(0)); | 
| 252           } else { | 252           } else { | 
| 253             return implementation(that); | 253             return implementation(that); | 
| 254           } | 254           } | 
| 255         } | 255         } | 
| 256       } | 256       } | 
| 257       SetFunctionName(boundMethod, internalName); | 257       $setFunctionName(boundMethod, internalName); | 
| 258       %FunctionRemovePrototype(boundMethod); | 258       %FunctionRemovePrototype(boundMethod); | 
| 259       %SetNativeFlag(boundMethod); | 259       %SetNativeFlag(boundMethod); | 
| 260       this[internalName] = boundMethod; | 260       this[internalName] = boundMethod; | 
| 261     } | 261     } | 
| 262     return this[internalName]; | 262     return this[internalName]; | 
| 263   } | 263   } | 
| 264 | 264 | 
| 265   SetFunctionName(getter, methodName); | 265   $setFunctionName(getter, methodName); | 
| 266   %FunctionRemovePrototype(getter); | 266   %FunctionRemovePrototype(getter); | 
| 267   %SetNativeFlag(getter); | 267   %SetNativeFlag(getter); | 
| 268 | 268 | 
| 269   ObjectDefineProperty(obj.prototype, methodName, { | 269   $objectDefineProperty(obj.prototype, methodName, { | 
| 270     get: getter, | 270     get: getter, | 
| 271     enumerable: false, | 271     enumerable: false, | 
| 272     configurable: true | 272     configurable: true | 
| 273   }); | 273   }); | 
| 274 } | 274 } | 
| 275 | 275 | 
| 276 | 276 | 
| 277 /** | 277 /** | 
| 278  * Returns an intersection of locales and service supported locales. | 278  * Returns an intersection of locales and service supported locales. | 
| 279  * Parameter locales is treated as a priority list. | 279  * Parameter locales is treated as a priority list. | 
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 578   return extension === ''? '' : '-u' + extension; | 578   return extension === ''? '' : '-u' + extension; | 
| 579 } | 579 } | 
| 580 | 580 | 
| 581 | 581 | 
| 582 /** | 582 /** | 
| 583  * Converts all OwnProperties into | 583  * Converts all OwnProperties into | 
| 584  * configurable: false, writable: false, enumerable: true. | 584  * configurable: false, writable: false, enumerable: true. | 
| 585  */ | 585  */ | 
| 586 function freezeArray(array) { | 586 function freezeArray(array) { | 
| 587   array.forEach(function(element, index) { | 587   array.forEach(function(element, index) { | 
| 588     ObjectDefineProperty(array, index, {value: element, | 588     $objectDefineProperty(array, index, {value: element, | 
| 589                                           configurable: false, | 589                                          configurable: false, | 
| 590                                           writable: false, | 590                                          writable: false, | 
| 591                                           enumerable: true}); | 591                                          enumerable: true}); | 
| 592   }); | 592   }); | 
| 593 | 593 | 
| 594   ObjectDefineProperty(array, 'length', {value: array.length, | 594   $objectDefineProperty(array, 'length', {value: array.length, | 
| 595                                          writable: false}); | 595                                           writable: false}); | 
| 596   return array; | 596   return array; | 
| 597 } | 597 } | 
| 598 | 598 | 
| 599 | 599 | 
| 600 /** | 600 /** | 
| 601  * It's sometimes desireable to leave user requested locale instead of ICU | 601  * It's sometimes desireable to leave user requested locale instead of ICU | 
| 602  * supported one (zh-TW is equivalent to zh-Hant-TW, so we should keep shorter | 602  * supported one (zh-TW is equivalent to zh-Hant-TW, so we should keep shorter | 
| 603  * one, if that was what user requested). | 603  * one, if that was what user requested). | 
| 604  * This function returns user specified tag if its maximized form matches ICU | 604  * This function returns user specified tag if its maximized form matches ICU | 
| 605  * resolved locale. If not we return ICU result. | 605  * resolved locale. If not we return ICU result. | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 646 | 646 | 
| 647   return available; | 647   return available; | 
| 648 } | 648 } | 
| 649 | 649 | 
| 650 | 650 | 
| 651 /** | 651 /** | 
| 652  * Defines a property and sets writable and enumerable to true. | 652  * Defines a property and sets writable and enumerable to true. | 
| 653  * Configurable is false by default. | 653  * Configurable is false by default. | 
| 654  */ | 654  */ | 
| 655 function defineWEProperty(object, property, value) { | 655 function defineWEProperty(object, property, value) { | 
| 656   ObjectDefineProperty(object, property, | 656   $objectDefineProperty(object, property, | 
| 657                        {value: value, writable: true, enumerable: true}); | 657                         {value: value, writable: true, enumerable: true}); | 
| 658 } | 658 } | 
| 659 | 659 | 
| 660 | 660 | 
| 661 /** | 661 /** | 
| 662  * Adds property to an object if the value is not undefined. | 662  * Adds property to an object if the value is not undefined. | 
| 663  * Sets configurable descriptor to false. | 663  * Sets configurable descriptor to false. | 
| 664  */ | 664  */ | 
| 665 function addWEPropertyIfDefined(object, property, value) { | 665 function addWEPropertyIfDefined(object, property, value) { | 
| 666   if (value !== undefined) { | 666   if (value !== undefined) { | 
| 667     defineWEProperty(object, property, value); | 667     defineWEProperty(object, property, value); | 
| 668   } | 668   } | 
| 669 } | 669 } | 
| 670 | 670 | 
| 671 | 671 | 
| 672 /** | 672 /** | 
| 673  * Defines a property and sets writable, enumerable and configurable to true. | 673  * Defines a property and sets writable, enumerable and configurable to true. | 
| 674  */ | 674  */ | 
| 675 function defineWECProperty(object, property, value) { | 675 function defineWECProperty(object, property, value) { | 
| 676   ObjectDefineProperty(object, property, | 676   $objectDefineProperty(object, property, {value: value, | 
| 677                        {value: value, | 677                                            writable: true, | 
| 678                         writable: true, | 678                                            enumerable: true, | 
| 679                         enumerable: true, | 679                                            configurable: true}); | 
| 680                         configurable: true}); |  | 
| 681 } | 680 } | 
| 682 | 681 | 
| 683 | 682 | 
| 684 /** | 683 /** | 
| 685  * Adds property to an object if the value is not undefined. | 684  * Adds property to an object if the value is not undefined. | 
| 686  * Sets all descriptors to true. | 685  * Sets all descriptors to true. | 
| 687  */ | 686  */ | 
| 688 function addWECPropertyIfDefined(object, property, value) { | 687 function addWECPropertyIfDefined(object, property, value) { | 
| 689   if (value !== undefined) { | 688   if (value !== undefined) { | 
| 690     defineWECProperty(object, property, value); | 689     defineWECProperty(object, property, value); | 
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 910     extension = '-u-co-search'; | 909     extension = '-u-co-search'; | 
| 911   } | 910   } | 
| 912   defineWEProperty(internalOptions, 'collation', collation); | 911   defineWEProperty(internalOptions, 'collation', collation); | 
| 913 | 912 | 
| 914   var requestedLocale = locale.locale + extension; | 913   var requestedLocale = locale.locale + extension; | 
| 915 | 914 | 
| 916   // We define all properties C++ code may produce, to prevent security | 915   // We define all properties C++ code may produce, to prevent security | 
| 917   // problems. If malicious user decides to redefine Object.prototype.locale | 916   // problems. If malicious user decides to redefine Object.prototype.locale | 
| 918   // we can't just use plain x.locale = 'us' or in C++ Set("locale", "us"). | 917   // we can't just use plain x.locale = 'us' or in C++ Set("locale", "us"). | 
| 919   // ObjectDefineProperties will either succeed defining or throw an error. | 918   // ObjectDefineProperties will either succeed defining or throw an error. | 
| 920   var resolved = ObjectDefineProperties({}, { | 919   var resolved = $objectDefineProperties({}, { | 
| 921     caseFirst: {writable: true}, | 920     caseFirst: {writable: true}, | 
| 922     collation: {value: internalOptions.collation, writable: true}, | 921     collation: {value: internalOptions.collation, writable: true}, | 
| 923     ignorePunctuation: {writable: true}, | 922     ignorePunctuation: {writable: true}, | 
| 924     locale: {writable: true}, | 923     locale: {writable: true}, | 
| 925     numeric: {writable: true}, | 924     numeric: {writable: true}, | 
| 926     requestedLocale: {value: requestedLocale, writable: true}, | 925     requestedLocale: {value: requestedLocale, writable: true}, | 
| 927     sensitivity: {writable: true}, | 926     sensitivity: {writable: true}, | 
| 928     strength: {writable: true}, | 927     strength: {writable: true}, | 
| 929     usage: {value: internalOptions.usage, writable: true} | 928     usage: {value: internalOptions.usage, writable: true} | 
| 930   }); | 929   }); | 
| 931 | 930 | 
| 932   var internalCollator = %CreateCollator(requestedLocale, | 931   var internalCollator = %CreateCollator(requestedLocale, | 
| 933                                          internalOptions, | 932                                          internalOptions, | 
| 934                                          resolved); | 933                                          resolved); | 
| 935 | 934 | 
| 936   // Writable, configurable and enumerable are set to false by default. | 935   // Writable, configurable and enumerable are set to false by default. | 
| 937   %MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator); | 936   %MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator); | 
| 938   ObjectDefineProperty(collator, 'resolved', {value: resolved}); | 937   $objectDefineProperty(collator, 'resolved', {value: resolved}); | 
| 939 | 938 | 
| 940   return collator; | 939   return collator; | 
| 941 } | 940 } | 
| 942 | 941 | 
| 943 | 942 | 
| 944 /** | 943 /** | 
| 945  * Constructs Intl.Collator object given optional locales and options | 944  * Constructs Intl.Collator object given optional locales and options | 
| 946  * parameters. | 945  * parameters. | 
| 947  * | 946  * | 
| 948  * @constructor | 947  * @constructor | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 983       usage: coll.resolved.usage, | 982       usage: coll.resolved.usage, | 
| 984       sensitivity: coll.resolved.sensitivity, | 983       sensitivity: coll.resolved.sensitivity, | 
| 985       ignorePunctuation: coll.resolved.ignorePunctuation, | 984       ignorePunctuation: coll.resolved.ignorePunctuation, | 
| 986       numeric: coll.resolved.numeric, | 985       numeric: coll.resolved.numeric, | 
| 987       caseFirst: coll.resolved.caseFirst, | 986       caseFirst: coll.resolved.caseFirst, | 
| 988       collation: coll.resolved.collation | 987       collation: coll.resolved.collation | 
| 989     }; | 988     }; | 
| 990   }, | 989   }, | 
| 991   DONT_ENUM | 990   DONT_ENUM | 
| 992 ); | 991 ); | 
| 993 SetFunctionName(Intl.Collator.prototype.resolvedOptions, 'resolvedOptions'); | 992 $setFunctionName(Intl.Collator.prototype.resolvedOptions, 'resolvedOptions'); | 
| 994 %FunctionRemovePrototype(Intl.Collator.prototype.resolvedOptions); | 993 %FunctionRemovePrototype(Intl.Collator.prototype.resolvedOptions); | 
| 995 %SetNativeFlag(Intl.Collator.prototype.resolvedOptions); | 994 %SetNativeFlag(Intl.Collator.prototype.resolvedOptions); | 
| 996 | 995 | 
| 997 | 996 | 
| 998 /** | 997 /** | 
| 999  * Returns the subset of the given locale list for which this locale list | 998  * Returns the subset of the given locale list for which this locale list | 
| 1000  * has a matching (possibly fallback) locale. Locales appear in the same | 999  * has a matching (possibly fallback) locale. Locales appear in the same | 
| 1001  * order in the returned list as in the input list. | 1000  * order in the returned list as in the input list. | 
| 1002  * Options are optional parameter. | 1001  * Options are optional parameter. | 
| 1003  */ | 1002  */ | 
| 1004 %AddNamedProperty(Intl.Collator, 'supportedLocalesOf', function(locales) { | 1003 %AddNamedProperty(Intl.Collator, 'supportedLocalesOf', function(locales) { | 
| 1005     if (%_IsConstructCall()) { | 1004     if (%_IsConstructCall()) { | 
| 1006       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1005       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1007     } | 1006     } | 
| 1008 | 1007 | 
| 1009     return supportedLocalesOf('collator', locales, %_Arguments(1)); | 1008     return supportedLocalesOf('collator', locales, %_Arguments(1)); | 
| 1010   }, | 1009   }, | 
| 1011   DONT_ENUM | 1010   DONT_ENUM | 
| 1012 ); | 1011 ); | 
| 1013 SetFunctionName(Intl.Collator.supportedLocalesOf, 'supportedLocalesOf'); | 1012 $setFunctionName(Intl.Collator.supportedLocalesOf, 'supportedLocalesOf'); | 
| 1014 %FunctionRemovePrototype(Intl.Collator.supportedLocalesOf); | 1013 %FunctionRemovePrototype(Intl.Collator.supportedLocalesOf); | 
| 1015 %SetNativeFlag(Intl.Collator.supportedLocalesOf); | 1014 %SetNativeFlag(Intl.Collator.supportedLocalesOf); | 
| 1016 | 1015 | 
| 1017 | 1016 | 
| 1018 /** | 1017 /** | 
| 1019  * When the compare method is called with two arguments x and y, it returns a | 1018  * When the compare method is called with two arguments x and y, it returns a | 
| 1020  * Number other than NaN that represents the result of a locale-sensitive | 1019  * Number other than NaN that represents the result of a locale-sensitive | 
| 1021  * String comparison of x with y. | 1020  * String comparison of x with y. | 
| 1022  * The result is intended to order String values in the sort order specified | 1021  * The result is intended to order String values in the sort order specified | 
| 1023  * by the effective locale and collation options computed during construction | 1022  * by the effective locale and collation options computed during construction | 
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1124   defineWEProperty(internalOptions, 'useGrouping', getOption( | 1123   defineWEProperty(internalOptions, 'useGrouping', getOption( | 
| 1125     'useGrouping', 'boolean', undefined, true)); | 1124     'useGrouping', 'boolean', undefined, true)); | 
| 1126 | 1125 | 
| 1127   // ICU prefers options to be passed using -u- extension key/values for | 1126   // ICU prefers options to be passed using -u- extension key/values for | 
| 1128   // number format, so we need to build that. | 1127   // number format, so we need to build that. | 
| 1129   var extensionMap = parseExtension(locale.extension); | 1128   var extensionMap = parseExtension(locale.extension); | 
| 1130   var extension = setOptions(options, extensionMap, NUMBER_FORMAT_KEY_MAP, | 1129   var extension = setOptions(options, extensionMap, NUMBER_FORMAT_KEY_MAP, | 
| 1131                              getOption, internalOptions); | 1130                              getOption, internalOptions); | 
| 1132 | 1131 | 
| 1133   var requestedLocale = locale.locale + extension; | 1132   var requestedLocale = locale.locale + extension; | 
| 1134   var resolved = ObjectDefineProperties({}, { | 1133   var resolved = $objectDefineProperties({}, { | 
| 1135     currency: {writable: true}, | 1134     currency: {writable: true}, | 
| 1136     currencyDisplay: {writable: true}, | 1135     currencyDisplay: {writable: true}, | 
| 1137     locale: {writable: true}, | 1136     locale: {writable: true}, | 
| 1138     maximumFractionDigits: {writable: true}, | 1137     maximumFractionDigits: {writable: true}, | 
| 1139     minimumFractionDigits: {writable: true}, | 1138     minimumFractionDigits: {writable: true}, | 
| 1140     minimumIntegerDigits: {writable: true}, | 1139     minimumIntegerDigits: {writable: true}, | 
| 1141     numberingSystem: {writable: true}, | 1140     numberingSystem: {writable: true}, | 
| 1142     requestedLocale: {value: requestedLocale, writable: true}, | 1141     requestedLocale: {value: requestedLocale, writable: true}, | 
| 1143     style: {value: internalOptions.style, writable: true}, | 1142     style: {value: internalOptions.style, writable: true}, | 
| 1144     useGrouping: {writable: true} | 1143     useGrouping: {writable: true} | 
| 1145   }); | 1144   }); | 
| 1146   if (internalOptions.hasOwnProperty('minimumSignificantDigits')) { | 1145   if (internalOptions.hasOwnProperty('minimumSignificantDigits')) { | 
| 1147     defineWEProperty(resolved, 'minimumSignificantDigits', undefined); | 1146     defineWEProperty(resolved, 'minimumSignificantDigits', undefined); | 
| 1148   } | 1147   } | 
| 1149   if (internalOptions.hasOwnProperty('maximumSignificantDigits')) { | 1148   if (internalOptions.hasOwnProperty('maximumSignificantDigits')) { | 
| 1150     defineWEProperty(resolved, 'maximumSignificantDigits', undefined); | 1149     defineWEProperty(resolved, 'maximumSignificantDigits', undefined); | 
| 1151   } | 1150   } | 
| 1152   var formatter = %CreateNumberFormat(requestedLocale, | 1151   var formatter = %CreateNumberFormat(requestedLocale, | 
| 1153                                       internalOptions, | 1152                                       internalOptions, | 
| 1154                                       resolved); | 1153                                       resolved); | 
| 1155 | 1154 | 
| 1156   // We can't get information about number or currency style from ICU, so we | 1155   // We can't get information about number or currency style from ICU, so we | 
| 1157   // assume user request was fulfilled. | 1156   // assume user request was fulfilled. | 
| 1158   if (internalOptions.style === 'currency') { | 1157   if (internalOptions.style === 'currency') { | 
| 1159     ObjectDefineProperty(resolved, 'currencyDisplay', {value: currencyDisplay, | 1158     $objectDefineProperty(resolved, 'currencyDisplay', {value: currencyDisplay, | 
| 1160                                                        writable: true}); | 1159                                                         writable: true}); | 
| 1161   } | 1160   } | 
| 1162 | 1161 | 
| 1163   %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter); | 1162   %MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter); | 
| 1164   ObjectDefineProperty(numberFormat, 'resolved', {value: resolved}); | 1163   $objectDefineProperty(numberFormat, 'resolved', {value: resolved}); | 
| 1165 | 1164 | 
| 1166   return numberFormat; | 1165   return numberFormat; | 
| 1167 } | 1166 } | 
| 1168 | 1167 | 
| 1169 | 1168 | 
| 1170 /** | 1169 /** | 
| 1171  * Constructs Intl.NumberFormat object given optional locales and options | 1170  * Constructs Intl.NumberFormat object given optional locales and options | 
| 1172  * parameters. | 1171  * parameters. | 
| 1173  * | 1172  * | 
| 1174  * @constructor | 1173  * @constructor | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1227 | 1226 | 
| 1228     if (format.resolved.hasOwnProperty('maximumSignificantDigits')) { | 1227     if (format.resolved.hasOwnProperty('maximumSignificantDigits')) { | 
| 1229       defineWECProperty(result, 'maximumSignificantDigits', | 1228       defineWECProperty(result, 'maximumSignificantDigits', | 
| 1230                         format.resolved.maximumSignificantDigits); | 1229                         format.resolved.maximumSignificantDigits); | 
| 1231     } | 1230     } | 
| 1232 | 1231 | 
| 1233     return result; | 1232     return result; | 
| 1234   }, | 1233   }, | 
| 1235   DONT_ENUM | 1234   DONT_ENUM | 
| 1236 ); | 1235 ); | 
| 1237 SetFunctionName(Intl.NumberFormat.prototype.resolvedOptions, | 1236 $setFunctionName(Intl.NumberFormat.prototype.resolvedOptions, | 
| 1238                  'resolvedOptions'); | 1237                  'resolvedOptions'); | 
| 1239 %FunctionRemovePrototype(Intl.NumberFormat.prototype.resolvedOptions); | 1238 %FunctionRemovePrototype(Intl.NumberFormat.prototype.resolvedOptions); | 
| 1240 %SetNativeFlag(Intl.NumberFormat.prototype.resolvedOptions); | 1239 %SetNativeFlag(Intl.NumberFormat.prototype.resolvedOptions); | 
| 1241 | 1240 | 
| 1242 | 1241 | 
| 1243 /** | 1242 /** | 
| 1244  * Returns the subset of the given locale list for which this locale list | 1243  * Returns the subset of the given locale list for which this locale list | 
| 1245  * has a matching (possibly fallback) locale. Locales appear in the same | 1244  * has a matching (possibly fallback) locale. Locales appear in the same | 
| 1246  * order in the returned list as in the input list. | 1245  * order in the returned list as in the input list. | 
| 1247  * Options are optional parameter. | 1246  * Options are optional parameter. | 
| 1248  */ | 1247  */ | 
| 1249 %AddNamedProperty(Intl.NumberFormat, 'supportedLocalesOf', function(locales) { | 1248 %AddNamedProperty(Intl.NumberFormat, 'supportedLocalesOf', function(locales) { | 
| 1250     if (%_IsConstructCall()) { | 1249     if (%_IsConstructCall()) { | 
| 1251       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1250       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1252     } | 1251     } | 
| 1253 | 1252 | 
| 1254     return supportedLocalesOf('numberformat', locales, %_Arguments(1)); | 1253     return supportedLocalesOf('numberformat', locales, %_Arguments(1)); | 
| 1255   }, | 1254   }, | 
| 1256   DONT_ENUM | 1255   DONT_ENUM | 
| 1257 ); | 1256 ); | 
| 1258 SetFunctionName(Intl.NumberFormat.supportedLocalesOf, 'supportedLocalesOf'); | 1257 $setFunctionName(Intl.NumberFormat.supportedLocalesOf, 'supportedLocalesOf'); | 
| 1259 %FunctionRemovePrototype(Intl.NumberFormat.supportedLocalesOf); | 1258 %FunctionRemovePrototype(Intl.NumberFormat.supportedLocalesOf); | 
| 1260 %SetNativeFlag(Intl.NumberFormat.supportedLocalesOf); | 1259 %SetNativeFlag(Intl.NumberFormat.supportedLocalesOf); | 
| 1261 | 1260 | 
| 1262 | 1261 | 
| 1263 /** | 1262 /** | 
| 1264  * Returns a String value representing the result of calling ToNumber(value) | 1263  * Returns a String value representing the result of calling ToNumber(value) | 
| 1265  * according to the effective locale and the formatting options of this | 1264  * according to the effective locale and the formatting options of this | 
| 1266  * NumberFormat. | 1265  * NumberFormat. | 
| 1267  */ | 1266  */ | 
| 1268 function formatNumber(formatter, value) { | 1267 function formatNumber(formatter, value) { | 
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1444     needsDefault = false; | 1443     needsDefault = false; | 
| 1445   } | 1444   } | 
| 1446 | 1445 | 
| 1447   if ((required === 'time' || required === 'any') && | 1446   if ((required === 'time' || required === 'any') && | 
| 1448       (options.hour !== undefined || options.minute !== undefined || | 1447       (options.hour !== undefined || options.minute !== undefined || | 
| 1449        options.second !== undefined)) { | 1448        options.second !== undefined)) { | 
| 1450     needsDefault = false; | 1449     needsDefault = false; | 
| 1451   } | 1450   } | 
| 1452 | 1451 | 
| 1453   if (needsDefault && (defaults === 'date' || defaults === 'all')) { | 1452   if (needsDefault && (defaults === 'date' || defaults === 'all')) { | 
| 1454     ObjectDefineProperty(options, 'year', {value: 'numeric', | 1453     $objectDefineProperty(options, 'year', {value: 'numeric', | 
|  | 1454                                             writable: true, | 
|  | 1455                                             enumerable: true, | 
|  | 1456                                             configurable: true}); | 
|  | 1457     $objectDefineProperty(options, 'month', {value: 'numeric', | 
|  | 1458                                              writable: true, | 
|  | 1459                                              enumerable: true, | 
|  | 1460                                              configurable: true}); | 
|  | 1461     $objectDefineProperty(options, 'day', {value: 'numeric', | 
| 1455                                            writable: true, | 1462                                            writable: true, | 
| 1456                                            enumerable: true, | 1463                                            enumerable: true, | 
| 1457                                            configurable: true}); | 1464                                            configurable: true}); | 
| 1458     ObjectDefineProperty(options, 'month', {value: 'numeric', | 1465   } | 
|  | 1466 | 
|  | 1467   if (needsDefault && (defaults === 'time' || defaults === 'all')) { | 
|  | 1468     $objectDefineProperty(options, 'hour', {value: 'numeric', | 
| 1459                                             writable: true, | 1469                                             writable: true, | 
| 1460                                             enumerable: true, | 1470                                             enumerable: true, | 
| 1461                                             configurable: true}); | 1471                                             configurable: true}); | 
| 1462     ObjectDefineProperty(options, 'day', {value: 'numeric', | 1472     $objectDefineProperty(options, 'minute', {value: 'numeric', | 
| 1463                                           writable: true, | 1473                                               writable: true, | 
| 1464                                           enumerable: true, | 1474                                               enumerable: true, | 
| 1465                                           configurable: true}); | 1475                                               configurable: true}); | 
| 1466   } | 1476     $objectDefineProperty(options, 'second', {value: 'numeric', | 
| 1467 | 1477                                               writable: true, | 
| 1468   if (needsDefault && (defaults === 'time' || defaults === 'all')) { | 1478                                               enumerable: true, | 
| 1469     ObjectDefineProperty(options, 'hour', {value: 'numeric', | 1479                                               configurable: true}); | 
| 1470                                              writable: true, |  | 
| 1471                                              enumerable: true, |  | 
| 1472                                              configurable: true}); |  | 
| 1473     ObjectDefineProperty(options, 'minute', {value: 'numeric', |  | 
| 1474                                                writable: true, |  | 
| 1475                                                enumerable: true, |  | 
| 1476                                                configurable: true}); |  | 
| 1477     ObjectDefineProperty(options, 'second', {value: 'numeric', |  | 
| 1478                                                writable: true, |  | 
| 1479                                                enumerable: true, |  | 
| 1480                                                configurable: true}); |  | 
| 1481   } | 1480   } | 
| 1482 | 1481 | 
| 1483   return options; | 1482   return options; | 
| 1484 } | 1483 } | 
| 1485 | 1484 | 
| 1486 | 1485 | 
| 1487 /** | 1486 /** | 
| 1488  * Initializes the given object so it's a valid DateTimeFormat instance. | 1487  * Initializes the given object so it's a valid DateTimeFormat instance. | 
| 1489  * Useful for subclassing. | 1488  * Useful for subclassing. | 
| 1490  */ | 1489  */ | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 1518   var tz = canonicalizeTimeZoneID(options.timeZone); | 1517   var tz = canonicalizeTimeZoneID(options.timeZone); | 
| 1519 | 1518 | 
| 1520   // ICU prefers options to be passed using -u- extension key/values, so | 1519   // ICU prefers options to be passed using -u- extension key/values, so | 
| 1521   // we need to build that. | 1520   // we need to build that. | 
| 1522   var internalOptions = {}; | 1521   var internalOptions = {}; | 
| 1523   var extensionMap = parseExtension(locale.extension); | 1522   var extensionMap = parseExtension(locale.extension); | 
| 1524   var extension = setOptions(options, extensionMap, DATETIME_FORMAT_KEY_MAP, | 1523   var extension = setOptions(options, extensionMap, DATETIME_FORMAT_KEY_MAP, | 
| 1525                              getOption, internalOptions); | 1524                              getOption, internalOptions); | 
| 1526 | 1525 | 
| 1527   var requestedLocale = locale.locale + extension; | 1526   var requestedLocale = locale.locale + extension; | 
| 1528   var resolved = ObjectDefineProperties({}, { | 1527   var resolved = $objectDefineProperties({}, { | 
| 1529     calendar: {writable: true}, | 1528     calendar: {writable: true}, | 
| 1530     day: {writable: true}, | 1529     day: {writable: true}, | 
| 1531     era: {writable: true}, | 1530     era: {writable: true}, | 
| 1532     hour12: {writable: true}, | 1531     hour12: {writable: true}, | 
| 1533     hour: {writable: true}, | 1532     hour: {writable: true}, | 
| 1534     locale: {writable: true}, | 1533     locale: {writable: true}, | 
| 1535     minute: {writable: true}, | 1534     minute: {writable: true}, | 
| 1536     month: {writable: true}, | 1535     month: {writable: true}, | 
| 1537     numberingSystem: {writable: true}, | 1536     numberingSystem: {writable: true}, | 
| 1538     pattern: {writable: true}, | 1537     pattern: {writable: true}, | 
| 1539     requestedLocale: {value: requestedLocale, writable: true}, | 1538     requestedLocale: {value: requestedLocale, writable: true}, | 
| 1540     second: {writable: true}, | 1539     second: {writable: true}, | 
| 1541     timeZone: {writable: true}, | 1540     timeZone: {writable: true}, | 
| 1542     timeZoneName: {writable: true}, | 1541     timeZoneName: {writable: true}, | 
| 1543     tz: {value: tz, writable: true}, | 1542     tz: {value: tz, writable: true}, | 
| 1544     weekday: {writable: true}, | 1543     weekday: {writable: true}, | 
| 1545     year: {writable: true} | 1544     year: {writable: true} | 
| 1546   }); | 1545   }); | 
| 1547 | 1546 | 
| 1548   var formatter = %CreateDateTimeFormat( | 1547   var formatter = %CreateDateTimeFormat( | 
| 1549     requestedLocale, {skeleton: ldmlString, timeZone: tz}, resolved); | 1548     requestedLocale, {skeleton: ldmlString, timeZone: tz}, resolved); | 
| 1550 | 1549 | 
| 1551   if (tz !== undefined && tz !== resolved.timeZone) { | 1550   if (tz !== undefined && tz !== resolved.timeZone) { | 
| 1552     throw MakeRangeError(kUnsupportedTimeZone, tz); | 1551     throw MakeRangeError(kUnsupportedTimeZone, tz); | 
| 1553   } | 1552   } | 
| 1554 | 1553 | 
| 1555   %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter); | 1554   %MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter); | 
| 1556   ObjectDefineProperty(dateFormat, 'resolved', {value: resolved}); | 1555   $objectDefineProperty(dateFormat, 'resolved', {value: resolved}); | 
| 1557 | 1556 | 
| 1558   return dateFormat; | 1557   return dateFormat; | 
| 1559 } | 1558 } | 
| 1560 | 1559 | 
| 1561 | 1560 | 
| 1562 /** | 1561 /** | 
| 1563  * Constructs Intl.DateTimeFormat object given optional locales and options | 1562  * Constructs Intl.DateTimeFormat object given optional locales and options | 
| 1564  * parameters. | 1563  * parameters. | 
| 1565  * | 1564  * | 
| 1566  * @constructor | 1565  * @constructor | 
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1619     addWECPropertyIfDefined(result, 'weekday', fromPattern.weekday); | 1618     addWECPropertyIfDefined(result, 'weekday', fromPattern.weekday); | 
| 1620     addWECPropertyIfDefined(result, 'hour12', fromPattern.hour12); | 1619     addWECPropertyIfDefined(result, 'hour12', fromPattern.hour12); | 
| 1621     addWECPropertyIfDefined(result, 'hour', fromPattern.hour); | 1620     addWECPropertyIfDefined(result, 'hour', fromPattern.hour); | 
| 1622     addWECPropertyIfDefined(result, 'minute', fromPattern.minute); | 1621     addWECPropertyIfDefined(result, 'minute', fromPattern.minute); | 
| 1623     addWECPropertyIfDefined(result, 'second', fromPattern.second); | 1622     addWECPropertyIfDefined(result, 'second', fromPattern.second); | 
| 1624 | 1623 | 
| 1625     return result; | 1624     return result; | 
| 1626   }, | 1625   }, | 
| 1627   DONT_ENUM | 1626   DONT_ENUM | 
| 1628 ); | 1627 ); | 
| 1629 SetFunctionName(Intl.DateTimeFormat.prototype.resolvedOptions, | 1628 $setFunctionName(Intl.DateTimeFormat.prototype.resolvedOptions, | 
| 1630                 'resolvedOptions'); | 1629                 'resolvedOptions'); | 
| 1631 %FunctionRemovePrototype(Intl.DateTimeFormat.prototype.resolvedOptions); | 1630 %FunctionRemovePrototype(Intl.DateTimeFormat.prototype.resolvedOptions); | 
| 1632 %SetNativeFlag(Intl.DateTimeFormat.prototype.resolvedOptions); | 1631 %SetNativeFlag(Intl.DateTimeFormat.prototype.resolvedOptions); | 
| 1633 | 1632 | 
| 1634 | 1633 | 
| 1635 /** | 1634 /** | 
| 1636  * Returns the subset of the given locale list for which this locale list | 1635  * Returns the subset of the given locale list for which this locale list | 
| 1637  * has a matching (possibly fallback) locale. Locales appear in the same | 1636  * has a matching (possibly fallback) locale. Locales appear in the same | 
| 1638  * order in the returned list as in the input list. | 1637  * order in the returned list as in the input list. | 
| 1639  * Options are optional parameter. | 1638  * Options are optional parameter. | 
| 1640  */ | 1639  */ | 
| 1641 %AddNamedProperty(Intl.DateTimeFormat, 'supportedLocalesOf', function(locales) { | 1640 %AddNamedProperty(Intl.DateTimeFormat, 'supportedLocalesOf', function(locales) { | 
| 1642     if (%_IsConstructCall()) { | 1641     if (%_IsConstructCall()) { | 
| 1643       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1642       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1644     } | 1643     } | 
| 1645 | 1644 | 
| 1646     return supportedLocalesOf('dateformat', locales, %_Arguments(1)); | 1645     return supportedLocalesOf('dateformat', locales, %_Arguments(1)); | 
| 1647   }, | 1646   }, | 
| 1648   DONT_ENUM | 1647   DONT_ENUM | 
| 1649 ); | 1648 ); | 
| 1650 SetFunctionName(Intl.DateTimeFormat.supportedLocalesOf, 'supportedLocalesOf'); | 1649 $setFunctionName(Intl.DateTimeFormat.supportedLocalesOf, 'supportedLocalesOf'); | 
| 1651 %FunctionRemovePrototype(Intl.DateTimeFormat.supportedLocalesOf); | 1650 %FunctionRemovePrototype(Intl.DateTimeFormat.supportedLocalesOf); | 
| 1652 %SetNativeFlag(Intl.DateTimeFormat.supportedLocalesOf); | 1651 %SetNativeFlag(Intl.DateTimeFormat.supportedLocalesOf); | 
| 1653 | 1652 | 
| 1654 | 1653 | 
| 1655 /** | 1654 /** | 
| 1656  * Returns a String value representing the result of calling ToNumber(date) | 1655  * Returns a String value representing the result of calling ToNumber(date) | 
| 1657  * according to the effective locale and the formatting options of this | 1656  * according to the effective locale and the formatting options of this | 
| 1658  * DateTimeFormat. | 1657  * DateTimeFormat. | 
| 1659  */ | 1658  */ | 
| 1660 function formatDate(formatter, dateValue) { | 1659 function formatDate(formatter, dateValue) { | 
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1735   } | 1734   } | 
| 1736 | 1735 | 
| 1737   var getOption = getGetOption(options, 'breakiterator'); | 1736   var getOption = getGetOption(options, 'breakiterator'); | 
| 1738 | 1737 | 
| 1739   var internalOptions = {}; | 1738   var internalOptions = {}; | 
| 1740 | 1739 | 
| 1741   defineWEProperty(internalOptions, 'type', getOption( | 1740   defineWEProperty(internalOptions, 'type', getOption( | 
| 1742     'type', 'string', ['character', 'word', 'sentence', 'line'], 'word')); | 1741     'type', 'string', ['character', 'word', 'sentence', 'line'], 'word')); | 
| 1743 | 1742 | 
| 1744   var locale = resolveLocale('breakiterator', locales, options); | 1743   var locale = resolveLocale('breakiterator', locales, options); | 
| 1745   var resolved = ObjectDefineProperties({}, { | 1744   var resolved = $objectDefineProperties({}, { | 
| 1746     requestedLocale: {value: locale.locale, writable: true}, | 1745     requestedLocale: {value: locale.locale, writable: true}, | 
| 1747     type: {value: internalOptions.type, writable: true}, | 1746     type: {value: internalOptions.type, writable: true}, | 
| 1748     locale: {writable: true} | 1747     locale: {writable: true} | 
| 1749   }); | 1748   }); | 
| 1750 | 1749 | 
| 1751   var internalIterator = %CreateBreakIterator(locale.locale, | 1750   var internalIterator = %CreateBreakIterator(locale.locale, | 
| 1752                                               internalOptions, | 1751                                               internalOptions, | 
| 1753                                               resolved); | 1752                                               resolved); | 
| 1754 | 1753 | 
| 1755   %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator', | 1754   %MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator', | 
| 1756                                      internalIterator); | 1755                                      internalIterator); | 
| 1757   ObjectDefineProperty(iterator, 'resolved', {value: resolved}); | 1756   $objectDefineProperty(iterator, 'resolved', {value: resolved}); | 
| 1758 | 1757 | 
| 1759   return iterator; | 1758   return iterator; | 
| 1760 } | 1759 } | 
| 1761 | 1760 | 
| 1762 | 1761 | 
| 1763 /** | 1762 /** | 
| 1764  * Constructs Intl.v8BreakIterator object given optional locales and options | 1763  * Constructs Intl.v8BreakIterator object given optional locales and options | 
| 1765  * parameters. | 1764  * parameters. | 
| 1766  * | 1765  * | 
| 1767  * @constructor | 1766  * @constructor | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
| 1798     var locale = getOptimalLanguageTag(segmenter.resolved.requestedLocale, | 1797     var locale = getOptimalLanguageTag(segmenter.resolved.requestedLocale, | 
| 1799                                        segmenter.resolved.locale); | 1798                                        segmenter.resolved.locale); | 
| 1800 | 1799 | 
| 1801     return { | 1800     return { | 
| 1802       locale: locale, | 1801       locale: locale, | 
| 1803       type: segmenter.resolved.type | 1802       type: segmenter.resolved.type | 
| 1804     }; | 1803     }; | 
| 1805   }, | 1804   }, | 
| 1806   DONT_ENUM | 1805   DONT_ENUM | 
| 1807 ); | 1806 ); | 
| 1808 SetFunctionName(Intl.v8BreakIterator.prototype.resolvedOptions, | 1807 $setFunctionName(Intl.v8BreakIterator.prototype.resolvedOptions, | 
| 1809                 'resolvedOptions'); | 1808                 'resolvedOptions'); | 
| 1810 %FunctionRemovePrototype(Intl.v8BreakIterator.prototype.resolvedOptions); | 1809 %FunctionRemovePrototype(Intl.v8BreakIterator.prototype.resolvedOptions); | 
| 1811 %SetNativeFlag(Intl.v8BreakIterator.prototype.resolvedOptions); | 1810 %SetNativeFlag(Intl.v8BreakIterator.prototype.resolvedOptions); | 
| 1812 | 1811 | 
| 1813 | 1812 | 
| 1814 /** | 1813 /** | 
| 1815  * Returns the subset of the given locale list for which this locale list | 1814  * Returns the subset of the given locale list for which this locale list | 
| 1816  * has a matching (possibly fallback) locale. Locales appear in the same | 1815  * has a matching (possibly fallback) locale. Locales appear in the same | 
| 1817  * order in the returned list as in the input list. | 1816  * order in the returned list as in the input list. | 
| 1818  * Options are optional parameter. | 1817  * Options are optional parameter. | 
| 1819  */ | 1818  */ | 
| 1820 %AddNamedProperty(Intl.v8BreakIterator, 'supportedLocalesOf', | 1819 %AddNamedProperty(Intl.v8BreakIterator, 'supportedLocalesOf', | 
| 1821   function(locales) { | 1820   function(locales) { | 
| 1822     if (%_IsConstructCall()) { | 1821     if (%_IsConstructCall()) { | 
| 1823       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1822       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1824     } | 1823     } | 
| 1825 | 1824 | 
| 1826     return supportedLocalesOf('breakiterator', locales, %_Arguments(1)); | 1825     return supportedLocalesOf('breakiterator', locales, %_Arguments(1)); | 
| 1827   }, | 1826   }, | 
| 1828   DONT_ENUM | 1827   DONT_ENUM | 
| 1829 ); | 1828 ); | 
| 1830 SetFunctionName(Intl.v8BreakIterator.supportedLocalesOf, 'supportedLocalesOf'); | 1829 $setFunctionName(Intl.v8BreakIterator.supportedLocalesOf, 'supportedLocalesOf'); | 
| 1831 %FunctionRemovePrototype(Intl.v8BreakIterator.supportedLocalesOf); | 1830 %FunctionRemovePrototype(Intl.v8BreakIterator.supportedLocalesOf); | 
| 1832 %SetNativeFlag(Intl.v8BreakIterator.supportedLocalesOf); | 1831 %SetNativeFlag(Intl.v8BreakIterator.supportedLocalesOf); | 
| 1833 | 1832 | 
| 1834 | 1833 | 
| 1835 /** | 1834 /** | 
| 1836  * Adopts text to segment using the iterator. Old text, if present, | 1835  * Adopts text to segment using the iterator. Old text, if present, | 
| 1837  * gets discarded. | 1836  * gets discarded. | 
| 1838  */ | 1837  */ | 
| 1839 function adoptText(iterator, text) { | 1838 function adoptText(iterator, text) { | 
| 1840   %BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(iterator), | 1839   %BreakIteratorAdoptText(%GetImplFromInitializedIntlObject(iterator), | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1914     return defaultObjects[service]; | 1913     return defaultObjects[service]; | 
| 1915   } | 1914   } | 
| 1916   return new savedObjects[service](locales, useOptions); | 1915   return new savedObjects[service](locales, useOptions); | 
| 1917 } | 1916 } | 
| 1918 | 1917 | 
| 1919 | 1918 | 
| 1920 /** | 1919 /** | 
| 1921  * Compares this and that, and returns less than 0, 0 or greater than 0 value. | 1920  * Compares this and that, and returns less than 0, 0 or greater than 0 value. | 
| 1922  * Overrides the built-in method. | 1921  * Overrides the built-in method. | 
| 1923  */ | 1922  */ | 
| 1924 OverrideFunction(GlobalString.prototype, 'localeCompare', function(that) { | 1923 $overrideFunction(GlobalString.prototype, 'localeCompare', function(that) { | 
| 1925     if (%_IsConstructCall()) { | 1924     if (%_IsConstructCall()) { | 
| 1926       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1925       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1927     } | 1926     } | 
| 1928 | 1927 | 
| 1929     if (IS_NULL_OR_UNDEFINED(this)) { | 1928     if (IS_NULL_OR_UNDEFINED(this)) { | 
| 1930       throw MakeTypeError(kMethodInvokedOnNullOrUndefined); | 1929       throw MakeTypeError(kMethodInvokedOnNullOrUndefined); | 
| 1931     } | 1930     } | 
| 1932 | 1931 | 
| 1933     var locales = %_Arguments(1); | 1932     var locales = %_Arguments(1); | 
| 1934     var options = %_Arguments(2); | 1933     var options = %_Arguments(2); | 
| 1935     var collator = cachedOrNewService('collator', locales, options); | 1934     var collator = cachedOrNewService('collator', locales, options); | 
| 1936     return compare(collator, this, that); | 1935     return compare(collator, this, that); | 
| 1937   } | 1936   } | 
| 1938 ); | 1937 ); | 
| 1939 | 1938 | 
| 1940 | 1939 | 
| 1941 /** | 1940 /** | 
| 1942  * Unicode normalization. This method is called with one argument that | 1941  * Unicode normalization. This method is called with one argument that | 
| 1943  * specifies the normalization form. | 1942  * specifies the normalization form. | 
| 1944  * If none is specified, "NFC" is assumed. | 1943  * If none is specified, "NFC" is assumed. | 
| 1945  * If the form is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw | 1944  * If the form is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw | 
| 1946  * a RangeError Exception. | 1945  * a RangeError Exception. | 
| 1947  */ | 1946  */ | 
| 1948 OverrideFunction(GlobalString.prototype, 'normalize', function(that) { | 1947 $overrideFunction(GlobalString.prototype, 'normalize', function(that) { | 
| 1949     if (%_IsConstructCall()) { | 1948     if (%_IsConstructCall()) { | 
| 1950       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1949       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1951     } | 1950     } | 
| 1952 | 1951 | 
| 1953     CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize"); | 1952     CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize"); | 
| 1954 | 1953 | 
| 1955     var form = GlobalString(%_Arguments(0) || 'NFC'); | 1954     var form = GlobalString(%_Arguments(0) || 'NFC'); | 
| 1956 | 1955 | 
| 1957     var normalizationForm = NORMALIZATION_FORMS.indexOf(form); | 1956     var normalizationForm = NORMALIZATION_FORMS.indexOf(form); | 
| 1958     if (normalizationForm === -1) { | 1957     if (normalizationForm === -1) { | 
| 1959       throw MakeRangeError(kNormalizationForm, NORMALIZATION_FORMS.join(', ')); | 1958       throw MakeRangeError(kNormalizationForm, NORMALIZATION_FORMS.join(', ')); | 
| 1960     } | 1959     } | 
| 1961 | 1960 | 
| 1962     return %StringNormalize(this, normalizationForm); | 1961     return %StringNormalize(this, normalizationForm); | 
| 1963   } | 1962   } | 
| 1964 ); | 1963 ); | 
| 1965 | 1964 | 
| 1966 | 1965 | 
| 1967 /** | 1966 /** | 
| 1968  * Formats a Number object (this) using locale and options values. | 1967  * Formats a Number object (this) using locale and options values. | 
| 1969  * If locale or options are omitted, defaults are used. | 1968  * If locale or options are omitted, defaults are used. | 
| 1970  */ | 1969  */ | 
| 1971 OverrideFunction(GlobalNumber.prototype, 'toLocaleString', function() { | 1970 $overrideFunction(GlobalNumber.prototype, 'toLocaleString', function() { | 
| 1972     if (%_IsConstructCall()) { | 1971     if (%_IsConstructCall()) { | 
| 1973       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 1972       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 1974     } | 1973     } | 
| 1975 | 1974 | 
| 1976     if (!(this instanceof GlobalNumber) && typeof(this) !== 'number') { | 1975     if (!(this instanceof GlobalNumber) && typeof(this) !== 'number') { | 
| 1977       throw MakeTypeError(kMethodInvokedOnWrongType, "Number"); | 1976       throw MakeTypeError(kMethodInvokedOnWrongType, "Number"); | 
| 1978     } | 1977     } | 
| 1979 | 1978 | 
| 1980     var locales = %_Arguments(0); | 1979     var locales = %_Arguments(0); | 
| 1981     var options = %_Arguments(1); | 1980     var options = %_Arguments(1); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 2004 | 2003 | 
| 2005   return formatDate(dateFormat, date); | 2004   return formatDate(dateFormat, date); | 
| 2006 } | 2005 } | 
| 2007 | 2006 | 
| 2008 | 2007 | 
| 2009 /** | 2008 /** | 
| 2010  * Formats a Date object (this) using locale and options values. | 2009  * Formats a Date object (this) using locale and options values. | 
| 2011  * If locale or options are omitted, defaults are used - both date and time are | 2010  * If locale or options are omitted, defaults are used - both date and time are | 
| 2012  * present in the output. | 2011  * present in the output. | 
| 2013  */ | 2012  */ | 
| 2014 OverrideFunction(GlobalDate.prototype, 'toLocaleString', function() { | 2013 $overrideFunction(GlobalDate.prototype, 'toLocaleString', function() { | 
| 2015     if (%_IsConstructCall()) { | 2014     if (%_IsConstructCall()) { | 
| 2016       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 2015       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 2017     } | 2016     } | 
| 2018 | 2017 | 
| 2019     var locales = %_Arguments(0); | 2018     var locales = %_Arguments(0); | 
| 2020     var options = %_Arguments(1); | 2019     var options = %_Arguments(1); | 
| 2021     return toLocaleDateTime( | 2020     return toLocaleDateTime( | 
| 2022         this, locales, options, 'any', 'all', 'dateformatall'); | 2021         this, locales, options, 'any', 'all', 'dateformatall'); | 
| 2023   } | 2022   } | 
| 2024 ); | 2023 ); | 
| 2025 | 2024 | 
| 2026 | 2025 | 
| 2027 /** | 2026 /** | 
| 2028  * Formats a Date object (this) using locale and options values. | 2027  * Formats a Date object (this) using locale and options values. | 
| 2029  * If locale or options are omitted, defaults are used - only date is present | 2028  * If locale or options are omitted, defaults are used - only date is present | 
| 2030  * in the output. | 2029  * in the output. | 
| 2031  */ | 2030  */ | 
| 2032 OverrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() { | 2031 $overrideFunction(GlobalDate.prototype, 'toLocaleDateString', function() { | 
| 2033     if (%_IsConstructCall()) { | 2032     if (%_IsConstructCall()) { | 
| 2034       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 2033       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 2035     } | 2034     } | 
| 2036 | 2035 | 
| 2037     var locales = %_Arguments(0); | 2036     var locales = %_Arguments(0); | 
| 2038     var options = %_Arguments(1); | 2037     var options = %_Arguments(1); | 
| 2039     return toLocaleDateTime( | 2038     return toLocaleDateTime( | 
| 2040         this, locales, options, 'date', 'date', 'dateformatdate'); | 2039         this, locales, options, 'date', 'date', 'dateformatdate'); | 
| 2041   } | 2040   } | 
| 2042 ); | 2041 ); | 
| 2043 | 2042 | 
| 2044 | 2043 | 
| 2045 /** | 2044 /** | 
| 2046  * Formats a Date object (this) using locale and options values. | 2045  * Formats a Date object (this) using locale and options values. | 
| 2047  * If locale or options are omitted, defaults are used - only time is present | 2046  * If locale or options are omitted, defaults are used - only time is present | 
| 2048  * in the output. | 2047  * in the output. | 
| 2049  */ | 2048  */ | 
| 2050 OverrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() { | 2049 $overrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() { | 
| 2051     if (%_IsConstructCall()) { | 2050     if (%_IsConstructCall()) { | 
| 2052       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 2051       throw MakeTypeError(kOrdinaryFunctionCalledAsConstructor); | 
| 2053     } | 2052     } | 
| 2054 | 2053 | 
| 2055     var locales = %_Arguments(0); | 2054     var locales = %_Arguments(0); | 
| 2056     var options = %_Arguments(1); | 2055     var options = %_Arguments(1); | 
| 2057     return toLocaleDateTime( | 2056     return toLocaleDateTime( | 
| 2058         this, locales, options, 'time', 'time', 'dateformattime'); | 2057         this, locales, options, 'time', 'time', 'dateformattime'); | 
| 2059   } | 2058   } | 
| 2060 ); | 2059 ); | 
| 2061 | 2060 | 
| 2062 })(); | 2061 })(); | 
| OLD | NEW | 
|---|