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

Side by Side Diff: src/extensions/i18n/collator.js

Issue 22671002: Move i18n collator code to runtime. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 4 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/collator.cc ('k') | src/extensions/i18n/i18n-extension.cc » ('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 17 matching lines...) Expand all
28 28
29 // ECMAScript 402 API implementation is broken into separate files for 29 // ECMAScript 402 API implementation is broken into separate files for
30 // each service. The build system combines them together into one 30 // each service. The build system combines them together into one
31 // Intl namespace. 31 // Intl namespace.
32 32
33 /** 33 /**
34 * Initializes the given object so it's a valid Collator instance. 34 * Initializes the given object so it's a valid Collator instance.
35 * Useful for subclassing. 35 * Useful for subclassing.
36 */ 36 */
37 function initializeCollator(collator, locales, options) { 37 function initializeCollator(collator, locales, options) {
38 native function NativeJSCreateCollator();
39
40 if (collator.hasOwnProperty('__initializedIntlObject')) { 38 if (collator.hasOwnProperty('__initializedIntlObject')) {
41 throw new TypeError('Trying to re-initialize Collator object.'); 39 throw new TypeError('Trying to re-initialize Collator object.');
42 } 40 }
43 41
44 if (options === undefined) { 42 if (options === undefined) {
45 options = {}; 43 options = {};
46 } 44 }
47 45
48 var getOption = getGetOption(options, 'collator'); 46 var getOption = getGetOption(options, 'collator');
49 47
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 collation: {value: internalOptions.collation, writable: true}, 94 collation: {value: internalOptions.collation, writable: true},
97 ignorePunctuation: {writable: true}, 95 ignorePunctuation: {writable: true},
98 locale: {writable: true}, 96 locale: {writable: true},
99 numeric: {writable: true}, 97 numeric: {writable: true},
100 requestedLocale: {value: requestedLocale, writable: true}, 98 requestedLocale: {value: requestedLocale, writable: true},
101 sensitivity: {writable: true}, 99 sensitivity: {writable: true},
102 strength: {writable: true}, 100 strength: {writable: true},
103 usage: {value: internalOptions.usage, writable: true} 101 usage: {value: internalOptions.usage, writable: true}
104 }); 102 });
105 103
106 var internalCollator = NativeJSCreateCollator(requestedLocale, 104 var internalCollator = %CreateCollator(requestedLocale,
107 internalOptions, 105 internalOptions,
108 resolved); 106 resolved);
109 107
110 // Writable, configurable and enumerable are set to false by default. 108 // Writable, configurable and enumerable are set to false by default.
111 Object.defineProperty(collator, 'collator', {value: internalCollator}); 109 Object.defineProperty(collator, 'collator', {value: internalCollator});
112 Object.defineProperty(collator, '__initializedIntlObject', 110 Object.defineProperty(collator, '__initializedIntlObject',
113 {value: 'collator'}); 111 {value: 'collator'});
114 Object.defineProperty(collator, 'resolved', {value: resolved}); 112 Object.defineProperty(collator, 'resolved', {value: resolved});
115 113
116 return collator; 114 return collator;
117 } 115 }
118 116
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 * When the compare method is called with two arguments x and y, it returns a 195 * When the compare method is called with two arguments x and y, it returns a
198 * Number other than NaN that represents the result of a locale-sensitive 196 * Number other than NaN that represents the result of a locale-sensitive
199 * String comparison of x with y. 197 * String comparison of x with y.
200 * The result is intended to order String values in the sort order specified 198 * The result is intended to order String values in the sort order specified
201 * by the effective locale and collation options computed during construction 199 * by the effective locale and collation options computed during construction
202 * of this Collator object, and will be negative, zero, or positive, depending 200 * of this Collator object, and will be negative, zero, or positive, depending
203 * on whether x comes before y in the sort order, the Strings are equal under 201 * on whether x comes before y in the sort order, the Strings are equal under
204 * the sort order, or x comes after y in the sort order, respectively. 202 * the sort order, or x comes after y in the sort order, respectively.
205 */ 203 */
206 function compare(collator, x, y) { 204 function compare(collator, x, y) {
207 native function NativeJSInternalCompare(); 205 return %InternalCompare(collator.collator, String(x), String(y));
208 return NativeJSInternalCompare(collator.collator, String(x), String(y));
209 }; 206 };
210 207
211 208
212 addBoundMethod(Intl.Collator, 'compare', compare, 2); 209 addBoundMethod(Intl.Collator, 'compare', compare, 2);
OLDNEW
« no previous file with comments | « src/extensions/i18n/collator.cc ('k') | src/extensions/i18n/i18n-extension.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698