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

Unified Diff: src/i18n.js

Issue 40133004: Implements ES6 String.prototype.normalize method. (Closed) Base URL: git://github.com/v8/v8.git@bleeding_edge
Patch Set: Implementing feedback from review. Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/runtime.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/i18n.js
diff --git a/src/i18n.js b/src/i18n.js
index a64c7e67844b01ebc134956e95c2cba87cd5a288..f23b222981ee7d743ac5c0def23e58acad4ce09e 100644
--- a/src/i18n.js
+++ b/src/i18n.js
@@ -45,6 +45,11 @@ var AVAILABLE_SERVICES = ['collator',
'dateformat',
'breakiterator'];
+var NORMALIZATION_FORMS = ['NFC',
+ 'NFD',
+ 'NFKC',
+ 'NFKD'];
+
/**
* Caches available locales for each service.
*/
@@ -1988,6 +1993,40 @@ $Object.defineProperty($String.prototype, 'localeCompare', {
%FunctionRemovePrototype($String.prototype.localeCompare);
%SetNativeFlag($String.prototype.localeCompare);
+/**
+ * Unicode normalization. This method is called with one argument that
+ * specifies the normalization form.
+ * If none is specified, "NFC" is assumed.
+ * If the form is not one of "NFC", "NFD", "NFKC", or "NFKD", then throw
+ * a RangeError Exception.
+ */
+$Object.defineProperty($String.prototype, 'normalize', {
+ value: function(that) {
+ if (%_IsConstructCall()) {
+ throw new $TypeError(ORDINARY_FUNCTION_CALLED_AS_CONSTRUCTOR);
+ }
+
+ if (IS_NULL_OR_UNDEFINED(this)) {
+ throw new $TypeError('Method invoked on undefined or null value.');
+ }
+
+ var form = $String(%_Arguments(0) || 'NFC');
+
+ var normalizationForm = NORMALIZATION_FORMS.indexOf(form);
+ if (normalizationForm !== -1) {
+ return %StringNormalize(this, normalizationForm);
+ }
+ throw new $RangeError('The normalization form should be one of '
+ + NORMALIZATION_FORMS.join(', ') + '.');
+ },
+ writable: true,
+ configurable: true,
+ enumerable: false
+});
+%FunctionSetName($String.prototype.normalize, 'normalize');
+%FunctionRemovePrototype($String.prototype.normalize);
+%SetNativeFlag($String.prototype.normalize);
+
/**
* Formats a Number object (this) using locale and options values.
« no previous file with comments | « no previous file | src/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698