| Index: src/i18n.js
|
| diff --git a/src/i18n.js b/src/i18n.js
|
| index 6b563a00f915a867056e73c02856f8132226d5eb..2e5485749ae766fc469c8cd52c8257fe5b57e7b4 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.
|
| */
|
| @@ -1987,6 +1992,40 @@ $Object.defineProperty($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);
|
| + }
|
| +
|
| + 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.
|
| */
|
|
|