Index: src/js/i18n.js |
diff --git a/src/js/i18n.js b/src/js/i18n.js |
index d6f03fe96e8ef9b338d7441507401aa6a8292179..b3a0f5b6ebd1783b8b884c462f207b82bcaf8cff 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) { |
@@ -988,7 +993,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; |
} |
@@ -1209,7 +1216,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} |
@@ -1231,7 +1237,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; |
} |
@@ -1337,14 +1346,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. |
@@ -1606,7 +1613,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}, |
@@ -1625,7 +1631,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; |
} |
@@ -1759,7 +1768,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)); |
} |
@@ -1767,7 +1776,6 @@ function parseDate(formatter, value) { |
// 0 because date is optional argument. |
AddBoundMethod(Intl.DateTimeFormat, 'format', formatDate, 0); |
-AddBoundMethod(Intl.DateTimeFormat, 'v8Parse', parseDate, 1); |
/** |
@@ -1842,7 +1850,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; |
} |
@@ -2222,4 +2232,10 @@ OverrideFunction(GlobalDate.prototype, 'toLocaleTimeString', function() { |
} |
); |
+utils.Export(function(to) { |
+ to.AddBoundMethod = AddBoundMethod; |
+ to.IntlParseDate = IntlParseDate; |
+ to.IntlParseNumber = IntlParseNumber; |
+}); |
+ |
}) |