'dateformat',
'breakiterator'];
+var NORMALIZATION_FORMS = ['NFC',
+ 'NFD',
+ 'NFKC',
+ 'NFKD'];
+
/**
* Caches available locales for each service.
*/
/**
+ * 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);
+ }
+
+ CHECK_OBJECT_COERCIBLE(this, "String.prototype.normalize");
+
+ var form = $String(%_Arguments(0) || 'NFC');
+
+ var normalizationForm = NORMALIZATION_FORMS.indexOf(form);
+ if (normalizationForm === -1) {
+ throw new $RangeError('The normalization form should be one of '
+ + NORMALIZATION_FORMS.join(', ') + '.');
+ }
+
+ return %StringNormalize(this, normalizationForm);
+ },
+ 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.
* If locale or options are omitted, defaults are used.
*/