18b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// Copyright 2006-2011 the V8 project authors. All rights reserved. 28b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// Redistribution and use in source and binary forms, with or without 38b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// modification, are permitted provided that the following conditions are 48b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// met: 58b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// 68b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// * Redistributions of source code must retain the above copyright 78b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// notice, this list of conditions and the following disclaimer. 88b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// * Redistributions in binary form must reproduce the above 98b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// copyright notice, this list of conditions and the following 108b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// disclaimer in the documentation and/or other materials provided 118b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// with the distribution. 128b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// * Neither the name of Google Inc. nor the names of its 138b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// contributors may be used to endorse or promote products derived 148b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// from this software without specific prior written permission. 158b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// 168b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 178b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 188b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 198b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 208b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 218b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 228b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 238b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 248b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 258b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 268b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 278b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 288b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch// TODO(cira): Remove v8 prefix from v8Locale once we have stable API. 298b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale = function(optLocale) { 308b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSLocale(); 318b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var properties = NativeJSLocale(optLocale); 328b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch this.locale = properties.locale; 338b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch this.language = properties.language; 348b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch this.script = properties.script; 358b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch this.region = properties.region; 368b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 378b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 388b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.availableLocales = function() { 398b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSAvailableLocales(); 408b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return NativeJSAvailableLocales(); 418b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 428b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 438b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.maximizedLocale = function() { 448b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSMaximizedLocale(); 458b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return new v8Locale(NativeJSMaximizedLocale(this.locale)); 468b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 478b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 488b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.minimizedLocale = function() { 498b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSMinimizedLocale(); 508b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return new v8Locale(NativeJSMinimizedLocale(this.locale)); 518b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 528b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 538b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.displayLocale_ = function(displayLocale) { 548b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var result = this.locale; 558b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch if (displayLocale !== undefined) { 568b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch result = displayLocale.locale; 578b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch } 588b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return result; 598b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 608b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 618b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.displayLanguage = function(optDisplayLocale) { 628b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var displayLocale = this.displayLocale_(optDisplayLocale); 638b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSDisplayLanguage(); 648b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return NativeJSDisplayLanguage(this.locale, displayLocale); 658b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 668b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 678b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.displayScript = function(optDisplayLocale) { 688b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var displayLocale = this.displayLocale_(optDisplayLocale); 698b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSDisplayScript(); 708b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return NativeJSDisplayScript(this.locale, displayLocale); 718b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 728b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 738b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.displayRegion = function(optDisplayLocale) { 748b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var displayLocale = this.displayLocale_(optDisplayLocale); 758b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSDisplayRegion(); 768b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return NativeJSDisplayRegion(this.locale, displayLocale); 778b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 788b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 798b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.displayName = function(optDisplayLocale) { 808b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var displayLocale = this.displayLocale_(optDisplayLocale); 818b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSDisplayName(); 828b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return NativeJSDisplayName(this.locale, displayLocale); 838b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 848b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 858b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.v8BreakIterator = function(locale, type) { 868b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch native function NativeJSBreakIterator(); 878b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch var iterator = NativeJSBreakIterator(locale, type); 888b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch iterator.type = type; 898b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return iterator; 908b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 918b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 928b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.v8BreakIterator.BreakType = { 938b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'unknown': -1, 948b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'none': 0, 958b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'number': 100, 968b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'word': 200, 978b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'kana': 300, 988b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 'ideo': 400 998b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 1008b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch 1018b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdochv8Locale.prototype.v8CreateBreakIterator = function(type) { 1028b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch return new v8Locale.v8BreakIterator(this.locale, type); 1038b112d2025046f85ef7f6be087c6129c872ebad2Ben Murdoch}; 104