Index: src/js/i18n.js |
diff --git a/src/js/i18n.js b/src/js/i18n.js |
index dc64304a7853ae318f9e4f392b0bf9a8b7f927db..c7901c0e0febff7b0c0faa8f3a70c769f5b8b075 100644 |
--- a/src/js/i18n.js |
+++ b/src/js/i18n.js |
@@ -20,6 +20,7 @@ |
var ArrayIndexOf; |
var ArrayJoin; |
var ArrayPush; |
+var FLAG_intl_extra; |
var GlobalBoolean = global.Boolean; |
var GlobalDate = global.Date; |
var GlobalNumber = global.Number; |
@@ -64,6 +65,10 @@ utils.Import(function(from) { |
StringSubstring = from.StringSubstring; |
}); |
+utils.ImportFromExperimental(function(from) { |
+ FLAG_intl_extra = from.FLAG_intl_extra; |
+}); |
+ |
// Utilities for definitions |
function InstallFunction(object, name, func) { |
@@ -982,7 +987,9 @@ function initializeCollator(collator, locales, options) { |
// Writable, configurable and enumerable are set to false by default. |
%MarkAsInitializedIntlObjectOfType(collator, 'collator', internalCollator); |
collator[resolvedSymbol] = resolved; |
- %object_define_property(collator, 'resolved', resolvedAccessor); |
+ if (FLAG_intl_extra) { |
+ %object_define_property(collator, 'resolved', resolvedAccessor); |
+ } |
return collator; |
} |
@@ -1203,7 +1210,6 @@ function initializeNumberFormat(numberFormat, locales, options) { |
minimumFractionDigits: {writable: true}, |
minimumIntegerDigits: {writable: true}, |
numberingSystem: {writable: true}, |
- pattern: patternAccessor, |
requestedLocale: {value: requestedLocale, writable: true}, |
style: {value: internalOptions.style, writable: true}, |
useGrouping: {writable: true} |
@@ -1225,7 +1231,10 @@ function initializeNumberFormat(numberFormat, locales, options) { |
%MarkAsInitializedIntlObjectOfType(numberFormat, 'numberformat', formatter); |
numberFormat[resolvedSymbol] = resolved; |
- %object_define_property(numberFormat, 'resolved', resolvedAccessor); |
+ if (FLAG_intl_extra) { |
+ %object_define_property(resolved, 'pattern', patternAccessor); |
+ %object_define_property(numberFormat, 'resolved', resolvedAccessor); |
+ } |
return numberFormat; |
} |
@@ -1331,14 +1340,12 @@ function formatNumber(formatter, value) { |
/** |
* Returns a Number that represents string value that was passed in. |
*/ |
-function parseNumber(formatter, value) { |
+function IntlParseNumber(formatter, value) { |
return %InternalNumberParse(%GetImplFromInitializedIntlObject(formatter), |
GlobalString(value)); |
} |
- |
AddBoundMethod(Intl.NumberFormat, 'format', formatNumber, 1); |
-AddBoundMethod(Intl.NumberFormat, 'v8Parse', parseNumber, 1); |
/** |
* Returns a string that matches LDML representation of the options object. |
@@ -1600,7 +1607,6 @@ function initializeDateTimeFormat(dateFormat, locales, options) { |
month: {writable: true}, |
numberingSystem: {writable: true}, |
[patternSymbol]: {writable: true}, |
- pattern: patternAccessor, |
requestedLocale: {value: requestedLocale, writable: true}, |
second: {writable: true}, |
timeZone: {writable: true}, |
@@ -1619,7 +1625,10 @@ function initializeDateTimeFormat(dateFormat, locales, options) { |
%MarkAsInitializedIntlObjectOfType(dateFormat, 'dateformat', formatter); |
dateFormat[resolvedSymbol] = resolved; |
- %object_define_property(dateFormat, 'resolved', resolvedAccessor); |
+ if (FLAG_intl_extra) { |
+ %object_define_property(resolved, 'pattern', patternAccessor); |
+ %object_define_property(dateFormat, 'resolved', resolvedAccessor); |
+ } |
return dateFormat; |
} |
@@ -1753,7 +1762,7 @@ function formatDate(formatter, dateValue) { |
* DateTimeFormat. |
* Returns undefined if date string cannot be parsed. |
*/ |
-function parseDate(formatter, value) { |
+function IntlParseDate(formatter, value) { |
return %InternalDateParse(%GetImplFromInitializedIntlObject(formatter), |
GlobalString(value)); |
} |
@@ -1761,7 +1770,6 @@ function parseDate(formatter, value) { |
// 0 because date is optional argument. |
AddBoundMethod(Intl.DateTimeFormat, 'format', formatDate, 0); |
-AddBoundMethod(Intl.DateTimeFormat, 'v8Parse', parseDate, 1); |
/** |
@@ -1836,7 +1844,9 @@ function initializeBreakIterator(iterator, locales, options) { |
%MarkAsInitializedIntlObjectOfType(iterator, 'breakiterator', |
internalIterator); |
iterator[resolvedSymbol] = resolved; |
- %object_define_property(iterator, 'resolved', resolvedAccessor); |
+ if (FLAG_intl_extra) { |
+ %object_define_property(iterator, 'resolved', resolvedAccessor); |
+ } |
return iterator; |
} |
@@ -2135,4 +2145,10 @@ OverrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() { |
} |
); |
+utils.Export(function(to) { |
+ to.AddBoundMethod = AddBoundMethod; |
+ to.IntlParseDate = IntlParseDate; |
+ to.IntlParseNumber = IntlParseNumber; |
+}); |
+ |
}) |