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

Side by Side Diff: src/extensions/i18n/i18n-utils.js

Issue 18075004: Mark i18n functions as native and set proper names (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 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/footer.js ('k') | src/extensions/i18n/number-format.js » ('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 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // DateTimeFormat.format needs to be 0 arg method, but can stil 66 // DateTimeFormat.format needs to be 0 arg method, but can stil
67 // receive optional dateValue param. If one was provided, pass it 67 // receive optional dateValue param. If one was provided, pass it
68 // along. 68 // along.
69 if (arguments.length > 0) { 69 if (arguments.length > 0) {
70 return implementation(that, arguments[0]); 70 return implementation(that, arguments[0]);
71 } else { 71 } else {
72 return implementation(that); 72 return implementation(that);
73 } 73 }
74 } 74 }
75 } 75 }
76 %FunctionSetName(boundMethod, internalName);
76 %FunctionRemovePrototype(boundMethod); 77 %FunctionRemovePrototype(boundMethod);
78 %SetNativeFlag(boundMethod);
77 this[internalName] = boundMethod; 79 this[internalName] = boundMethod;
78 } 80 }
79 return this[internalName]; 81 return this[internalName];
80 } 82 }
81 83
84 %FunctionSetName(getter, methodName);
82 %FunctionRemovePrototype(getter); 85 %FunctionRemovePrototype(getter);
86 %SetNativeFlag(getter);
83 87
84 Object.defineProperty(obj.prototype, methodName, { 88 Object.defineProperty(obj.prototype, methodName, {
85 get: getter, 89 get: getter,
86 enumerable: false, 90 enumerable: false,
87 configurable: true 91 configurable: true
88 }); 92 });
89 } 93 }
90 94
91 95
92 /** 96 /**
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
178 * Returns a getOption function that extracts property value for given 182 * Returns a getOption function that extracts property value for given
179 * options object. If property is missing it returns defaultValue. If value 183 * options object. If property is missing it returns defaultValue. If value
180 * is out of range for that property it throws RangeError. 184 * is out of range for that property it throws RangeError.
181 */ 185 */
182 function getGetOption(options, caller) { 186 function getGetOption(options, caller) {
183 if (options === undefined) { 187 if (options === undefined) {
184 throw new Error('Internal ' + caller + ' error. ' + 188 throw new Error('Internal ' + caller + ' error. ' +
185 'Default options are missing.'); 189 'Default options are missing.');
186 } 190 }
187 191
188 function getOption(property, type, values, defaultValue) { 192 var getOption = function getOption(property, type, values, defaultValue) {
189 if (options[property] !== undefined) { 193 if (options[property] !== undefined) {
190 var value = options[property]; 194 var value = options[property];
191 switch (type) { 195 switch (type) {
192 case 'boolean': 196 case 'boolean':
193 value = Boolean(value); 197 value = Boolean(value);
194 break; 198 break;
195 case 'string': 199 case 'string':
196 value = String(value); 200 value = String(value);
197 break; 201 break;
198 case 'number': 202 case 'number':
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 * Returns filtered extension (number and date format constructors use 359 * Returns filtered extension (number and date format constructors use
356 * Unicode extensions for passing parameters to ICU). 360 * Unicode extensions for passing parameters to ICU).
357 * It's used for extension-option pairs only, e.g. kn-normalization, but not 361 * It's used for extension-option pairs only, e.g. kn-normalization, but not
358 * for 'sensitivity' since it doesn't have extension equivalent. 362 * for 'sensitivity' since it doesn't have extension equivalent.
359 * Extensions like nu and ca don't have options equivalent, so we place 363 * Extensions like nu and ca don't have options equivalent, so we place
360 * undefined in the map.property to denote that. 364 * undefined in the map.property to denote that.
361 */ 365 */
362 function setOptions(inOptions, extensionMap, keyValues, getOption, outOptions) { 366 function setOptions(inOptions, extensionMap, keyValues, getOption, outOptions) {
363 var extension = ''; 367 var extension = '';
364 368
365 function updateExtension(key, value) { 369 var updateExtension = function updateExtension(key, value) {
366 return '-' + key + '-' + String(value); 370 return '-' + key + '-' + String(value);
367 } 371 }
368 372
369 function updateProperty(property, type, value) { 373 var updateProperty = function updateProperty(property, type, value) {
370 if (type === 'boolean' && (typeof value === 'string')) { 374 if (type === 'boolean' && (typeof value === 'string')) {
371 value = (value === 'true') ? true : false; 375 value = (value === 'true') ? true : false;
372 } 376 }
373 377
374 if (property !== undefined) { 378 if (property !== undefined) {
375 defineWEProperty(outOptions, property, value); 379 defineWEProperty(outOptions, property, value);
376 } 380 }
377 } 381 }
378 382
379 for (var key in keyValues) { 383 for (var key in keyValues) {
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
528 } 532 }
529 } 533 }
530 534
531 535
532 /** 536 /**
533 * Returns titlecased word, aMeRricA -> America. 537 * Returns titlecased word, aMeRricA -> America.
534 */ 538 */
535 function toTitleCaseWord(word) { 539 function toTitleCaseWord(word) {
536 return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase(); 540 return word.substr(0, 1).toUpperCase() + word.substr(1).toLowerCase();
537 } 541 }
OLDNEW
« no previous file with comments | « src/extensions/i18n/footer.js ('k') | src/extensions/i18n/number-format.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698