| 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 15 matching lines...) Expand all Loading... |
| 26 var InstallFunctions = utils.InstallFunctions; | 26 var InstallFunctions = utils.InstallFunctions; |
| 27 var InstallGetter = utils.InstallGetter; | 27 var InstallGetter = utils.InstallGetter; |
| 28 var InternalArray = utils.InternalArray; | 28 var InternalArray = utils.InternalArray; |
| 29 var InternalRegExpMatch; | 29 var InternalRegExpMatch; |
| 30 var InternalRegExpReplace | 30 var InternalRegExpReplace |
| 31 var ObjectHasOwnProperty = utils.ImportNow("ObjectHasOwnProperty"); | 31 var ObjectHasOwnProperty = utils.ImportNow("ObjectHasOwnProperty"); |
| 32 var OverrideFunction = utils.OverrideFunction; | 32 var OverrideFunction = utils.OverrideFunction; |
| 33 var patternSymbol = utils.ImportNow("intl_pattern_symbol"); | 33 var patternSymbol = utils.ImportNow("intl_pattern_symbol"); |
| 34 var resolvedSymbol = utils.ImportNow("intl_resolved_symbol"); | 34 var resolvedSymbol = utils.ImportNow("intl_resolved_symbol"); |
| 35 var SetFunctionName = utils.SetFunctionName; | 35 var SetFunctionName = utils.SetFunctionName; |
| 36 var StringIndexOf; | |
| 37 var StringSubstr = GlobalString.prototype.substr; | 36 var StringSubstr = GlobalString.prototype.substr; |
| 38 var StringSubstring = GlobalString.prototype.substring; | 37 var StringSubstring = GlobalString.prototype.substring; |
| 39 | 38 |
| 40 utils.Import(function(from) { | 39 utils.Import(function(from) { |
| 41 ArrayJoin = from.ArrayJoin; | 40 ArrayJoin = from.ArrayJoin; |
| 42 ArrayPush = from.ArrayPush; | 41 ArrayPush = from.ArrayPush; |
| 43 InternalRegExpMatch = from.InternalRegExpMatch; | 42 InternalRegExpMatch = from.InternalRegExpMatch; |
| 44 InternalRegExpReplace = from.InternalRegExpReplace; | 43 InternalRegExpReplace = from.InternalRegExpReplace; |
| 45 StringIndexOf = from.StringIndexOf; | |
| 46 }); | 44 }); |
| 47 | 45 |
| 48 // Utilities for definitions | 46 // Utilities for definitions |
| 49 | 47 |
| 50 function InstallFunction(object, name, func) { | 48 function InstallFunction(object, name, func) { |
| 51 InstallFunctions(object, DONT_ENUM, [name, func]); | 49 InstallFunctions(object, DONT_ENUM, [name, func]); |
| 52 } | 50 } |
| 53 | 51 |
| 54 | 52 |
| 55 function InstallConstructor(object, name, func) { | 53 function InstallConstructor(object, name, func) { |
| (...skipping 764 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 820 * | 818 * |
| 821 * Returns false if the language tag is invalid. | 819 * Returns false if the language tag is invalid. |
| 822 */ | 820 */ |
| 823 function isStructuallyValidLanguageTag(locale) { | 821 function isStructuallyValidLanguageTag(locale) { |
| 824 // Check if it's well-formed, including grandfadered tags. | 822 // Check if it's well-formed, including grandfadered tags. |
| 825 if (IS_NULL(InternalRegExpMatch(GetLanguageTagRE(), locale))) { | 823 if (IS_NULL(InternalRegExpMatch(GetLanguageTagRE(), locale))) { |
| 826 return false; | 824 return false; |
| 827 } | 825 } |
| 828 | 826 |
| 829 // Just return if it's a x- form. It's all private. | 827 // Just return if it's a x- form. It's all private. |
| 830 if (%_Call(StringIndexOf, locale, 'x-') === 0) { | 828 if (%StringIndexOf(locale, 'x-', 0) === 0) { |
| 831 return true; | 829 return true; |
| 832 } | 830 } |
| 833 | 831 |
| 834 // Check if there are any duplicate variants or singletons (extensions). | 832 // Check if there are any duplicate variants or singletons (extensions). |
| 835 | 833 |
| 836 // Remove private use section. | 834 // Remove private use section. |
| 837 locale = %StringSplit(locale, '-x-', kMaxUint32)[0]; | 835 locale = %StringSplit(locale, '-x-', kMaxUint32)[0]; |
| 838 | 836 |
| 839 // Skip language since it can match variant regex, so we start from 1. | 837 // Skip language since it can match variant regex, so we start from 1. |
| 840 // We are matching i-klingon here, but that's ok, since i-klingon-klingon | 838 // We are matching i-klingon here, but that's ok, since i-klingon-klingon |
| (...skipping 1210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2051 if (IS_UNDEFINED(locales)) { | 2049 if (IS_UNDEFINED(locales)) { |
| 2052 language = GetDefaultICULocaleJS(); | 2050 language = GetDefaultICULocaleJS(); |
| 2053 } else if (IS_STRING(locales)) { | 2051 } else if (IS_STRING(locales)) { |
| 2054 language = canonicalizeLanguageTag(locales); | 2052 language = canonicalizeLanguageTag(locales); |
| 2055 } else { | 2053 } else { |
| 2056 var locales = initializeLocaleList(locales); | 2054 var locales = initializeLocaleList(locales); |
| 2057 language = locales.length > 0 ? locales[0] : GetDefaultICULocaleJS(); | 2055 language = locales.length > 0 ? locales[0] : GetDefaultICULocaleJS(); |
| 2058 } | 2056 } |
| 2059 | 2057 |
| 2060 // StringSplit is slower than this. | 2058 // StringSplit is slower than this. |
| 2061 var pos = %_Call(StringIndexOf, language, '-'); | 2059 var pos = %StringIndexOf(language, '-', 0); |
| 2062 if (pos != -1) { | 2060 if (pos != -1) { |
| 2063 language = %_Call(StringSubstring, language, 0, pos); | 2061 language = %_Call(StringSubstring, language, 0, pos); |
| 2064 } | 2062 } |
| 2065 | 2063 |
| 2066 var CUSTOM_CASE_LANGUAGES = ['az', 'el', 'lt', 'tr']; | 2064 var CUSTOM_CASE_LANGUAGES = ['az', 'el', 'lt', 'tr']; |
| 2067 var langIndex = %ArrayIndexOf(CUSTOM_CASE_LANGUAGES, language, 0); | 2065 var langIndex = %ArrayIndexOf(CUSTOM_CASE_LANGUAGES, language, 0); |
| 2068 if (langIndex == -1) { | 2066 if (langIndex == -1) { |
| 2069 // language-independent case conversion. | 2067 // language-independent case conversion. |
| 2070 return isToUpper ? %StringToUpperCaseI18N(s) : %StringToLowerCaseI18N(s); | 2068 return isToUpper ? %StringToUpperCaseI18N(s) : %StringToLowerCaseI18N(s); |
| 2071 } | 2069 } |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2270 } | 2268 } |
| 2271 ); | 2269 ); |
| 2272 | 2270 |
| 2273 %FunctionRemovePrototype(FormatDateToParts); | 2271 %FunctionRemovePrototype(FormatDateToParts); |
| 2274 | 2272 |
| 2275 utils.Export(function(to) { | 2273 utils.Export(function(to) { |
| 2276 to.FormatDateToParts = FormatDateToParts; | 2274 to.FormatDateToParts = FormatDateToParts; |
| 2277 }); | 2275 }); |
| 2278 | 2276 |
| 2279 }) | 2277 }) |
| OLD | NEW |