Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New Features about Number.prototype.toLocaleString() for IE11 in win7 and 8, a lot of related new definitions (reopened again) #57

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions src/lib/definitions.js
fasttime marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -386,6 +386,9 @@ function getFHPaddingEntries(index)
var LOCALE_INFINITY = Feature.LOCALE_INFINITY;
var LOCALE_NUMERALS = Feature.LOCALE_NUMERALS;
var LOCALE_NUMERALS_EXT = Feature.LOCALE_NUMERALS_EXT;
var LOCALE_NUMERALS_IE11_WIN7 = Feature.LOCALE_NUMERALS_IE11_WIN7;
var LOCALE_NUMERALS_IE11_WIN7_8 = Feature.LOCALE_NUMERALS_IE11_WIN7_8;
var LOCALE_NUMERALS_IE11_WIN8 = Feature.LOCALE_NUMERALS_IE11_WIN8;
var LOCATION = Feature.LOCATION;
var MOZILLA = Feature.MOZILLA;
var NAME = Feature.NAME;
Expand Down Expand Up @@ -1321,6 +1324,8 @@ function getFHPaddingEntries(index)
'∞':
[
define('Infinity[TO_LOCALE_STRING]()', LOCALE_INFINITY),
define('Infinity[TO_LOCALE_STRING]("ja")[1]', LOCALE_NUMERALS_IE11_WIN7_8),
define('Infinity[TO_LOCALE_STRING]("ru")', LOCALE_NUMERALS_IE11_WIN8),
define('Infinity[TO_LOCALE_STRING]("ja")[SLICE_OR_SUBSTR]("-1")', JAPANESE_INFINITY),
define('Infinity[TO_LOCALE_STRING]("ja").at("-1")', JAPANESE_INFINITY, AT),
defineCharDefault(),
Expand Down Expand Up @@ -2640,21 +2645,60 @@ function getFHPaddingEntries(index)
useLocaleNumeralDefinition('ي', '"ar"', NaN, 1);
useLocaleNumeralDefinition('س', '"ar"', NaN, 2);
useLocaleNumeralDefinition('ر', '"ar"', NaN, 4, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ب', '"ar"', NaN, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ق', '"ar"', NaN, 5, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ر', '"ar"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('م', '"ar"', NaN, 6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ق', '"ar"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('م', '"ar"', NaN, 7, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ا', '"ar"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ن', '"ar"', Infinity, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ه', '"ar"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ﺓ', '"ar"', Infinity, 8, LOCALE_NUMERALS_IE11_WIN7_8);
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm getting a different character. Did you mean this one?

Suggested change
useLocaleNumeralDefinition('', '"ar"', Infinity, 8, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ة', '"ar"', Infinity, 8, LOCALE_NUMERALS_IE11_WIN7_8);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes.

useLocaleNumeralDigitDefinitions('"bn"', 0x09e6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('č', '"cs"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('μ', '"el"', NaN, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('η', '"el"', NaN, 1, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('α', '"el"', NaN, 3, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ρ', '"el"', NaN, 4, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ι', '"el"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('θ', '"el"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ό', '"el"', NaN, 8, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ς', '"el"', NaN, 9, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('Ά', '"el"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('π', '"el"', Infinity, 1, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ε', '"el"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ο', '"el"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDigitDefinitions('"fa"', 0x06f0);
useLocaleNumeralDefinition('٬', '"fa"', 1000, 1);
useLocaleNumeralDefinition('ن', '"fa"', NaN, 0, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ا', '"fa"', NaN, 1, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ع', '"fa"', NaN, 2, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('د', '"fa"', NaN, 3, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ל', '"he"', NaN, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('非', '"ja"', NaN, 5, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('数', '"ja"', NaN, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('値', '"ja"', NaN, 7, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ė', '"lt"', Infinity, 7, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ī', '"lv"', Infinity, 6, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('ś', '"pl"', Infinity, 13, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('н', '"ru"', NaN, 0, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('е', '"ru"', NaN, 1, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('ч', '"ru"', NaN, 3, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('и', '"ru"', NaN, 4, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('с', '"ru"', NaN, 5, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('л', '"ru"', NaN, 6, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('о', '"ru"', NaN, 7, LOCALE_NUMERALS_EXT);
useLocaleNumeralDefinition('б', '"ru"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('е', '"ru"', Infinity, 1, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('с', '"ru"', Infinity, 2, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('к', '"ru"', Infinity, 3, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('н', '"ru"', Infinity, 5, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ч', '"ru"', Infinity, 7, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('о', '"ru"', Infinity, 9, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('т', '"ru"', Infinity, 11, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('ь', '"ru"', Infinity, 12, LOCALE_NUMERALS_IE11_WIN7);
useLocaleNumeralDefinition('正', '"zh"', Infinity, 0, LOCALE_NUMERALS_IE11_WIN7_8);
useLocaleNumeralDefinition('字', '"zh-cn"', NaN, 2, LOCALE_NUMERALS_IE11_WIN7_8);
}
)();
105 changes: 96 additions & 9 deletions src/lib/features.js
Original file line number Diff line number Diff line change
Expand Up @@ -581,6 +581,77 @@ var featureInfos =
},
includes: ['LOCALE_NUMERALS'],
},
LOCALE_NUMERALS_IE11_WIN7:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 7.\n' +
'This includes the letters in the Latvian string representation of Infinity ' +
'("bezgalība") and the letters in the Russian string representation of Infinity ' +
'("бесконечность").',
check:
function ()
{
var available =
checkLocaleNumeral('lv', Infinity, /^bezgalība/) &&
checkLocaleNumeral('ru', Infinity, /^бесконечность/);
return available;
},
includes: ['LOCALE_NUMERALS_IE11_WIN7_8'],
excludes: ['LOCALE_NUMERALS_IE11_WIN8'],
},
LOCALE_NUMERALS_IE11_WIN7_8:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 7 and 8.\n' +
'This includes all features of LOCALE_NUMERALS plus the output of the letters in the ' +
'second word of the Arabic string representation of NaN ("برقم"), the letters in the ' +
'Arabic string representation of Infinity ("+لا\xa0نهاية"), the letters in the the Czech ' +
'string representation of NaN ("Není\xa0číslo"), the letters in the the Greek string ' +
'representation of Infinity ("Άπειρο"), the letters in the Greek string representation ' +
'of NaN ("μη\xa0αριθμός"), the letters in the Hebrew string representation of NaN ' +
'("לא\xa0מספר"), the characters in the Japanese string representation of Infinity ' +
'("+∞"), the characters in the Japanese string representation of NaN ("NaN\xa0(非数値)"), ' +
'the letters in the Lithuanian string representation of Infinity ("begalybė"), the ' +
'letters in the Polish string representation of Infinity ("+nieskończoność"), the ' +
'characters in the Chinese string representation of Infinity ("正无穷大" or "正無窮大"), the ' +
'characters in the Simplified Chinese string representation of NaN ("非数字").',
check:
function ()
{
var available =
checkLocaleNumeral('ar', NaN, /^ليس.برقم/) &&
checkLocaleNumeral('ar', Infinity, /^\+لا.نهاية/) &&
checkLocaleNumeral('ar-td', 234567890.1, /^٢٣٤٬?٥٦٧٬?٨٩٠٫١/) &&
checkLocaleNumeral('cs', NaN, /^Není.číslo/) &&
checkLocaleNumeral('el', Infinity, /^Άπειρο/) &&
checkLocaleNumeral('el', NaN, /^μη.αριθμός/) &&
checkLocaleNumeral('he', NaN, /^לא.מספר/) &&
checkLocaleNumeral('ja', Infinity, /^\+∞/) &&
checkLocaleNumeral('ja', NaN, /^NaN \(非数値\)/) &&
checkLocaleNumeral('lt', Infinity, /^begalybė/) &&
checkLocaleNumeral('pl', Infinity, /^\+nieskończoność/) &&
checkLocaleNumeral('zh', Infinity, /^正/) &&
checkLocaleNumeral('zh-cn', NaN, /^非数字/);
return available;
},
includes: ['LOCALE_NUMERALS'],
excludes: ['LOCALE_NUMERALS_EXT'],
},
LOCALE_NUMERALS_IE11_WIN8:
{
description:
'Localized number formatting exclusive to Interner Explorer 11 in Windows 8.\n' +
'In this case, Latvian and Russian string representation of Infinity are both "∞".',
check:
function ()
{
var available = Infinity.toLocaleString('lv') === '∞' &&
Infinity.toLocaleString('ru') === '∞';
return available;
},
includes: ['LOCALE_NUMERALS_IE11_WIN7_8'],
excludes: ['LOCALE_NUMERALS_IE11_WIN7'],
},
LOCATION:
{
description:
Expand Down Expand Up @@ -1128,23 +1199,39 @@ var featureInfos =
versions: ['11'],
includes:
{
ANY_DOCUMENT: true,
DOCUMENT: false,
GMT: true,
JAPANESE_INFINITY: true,
LOCALE_NUMERALS: true,
PLAIN_INTL: true,
SHORT_LOCALES: true,
ANY_DOCUMENT: true,
DOCUMENT: false,
GMT: true,
JAPANESE_INFINITY: true,
LOCALE_NUMERALS: true,
LOCALE_NUMERALS_IE11_WIN7: true,
LOCALE_NUMERALS_IE11_WIN7_8: true,
PLAIN_INTL: true,
SHORT_LOCALES: true,
},
},
IE_11_WIN_10:
IE_11_WIN_8:
{
inherits: 'IE_11',
versions: ['11'],
compatibilityTag: 'on Windows 8',
compatibilityShortTag: 'W8',
includes:
{ LOCALE_NUMERALS_IE11_WIN7: false, LOCALE_NUMERALS_IE11_WIN8: true },
},
IE_11_WIN_10:
{
inherits: 'IE_11_WIN_8',
versions: ['11'],
compatibilityTag: 'on Windows 10',
compatibilityShortTag: 'W10',
includes:
{ LOCALE_INFINITY: true, LOCALE_NUMERALS: false, LOCALE_NUMERALS_EXT: true },
{
LOCALE_INFINITY: true,
LOCALE_NUMERALS_EXT: true,
LOCALE_NUMERALS_IE11_WIN7_8: false,
LOCALE_NUMERALS_IE11_WIN8: false,
},
},
NODE_0_10:
{
Expand Down
177 changes: 177 additions & 0 deletions test/helpers/feature-emulation.helpers.js
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,183 @@
}
);
},
LOCALE_NUMERALS_IE11_WIN7:
function ()
{
registerNumberToLocaleStringAdapter
(
this,
function (locale)
{
var returnValue;
switch (locale)
{
case 'lv':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return 'bezgalība';
case -Infinity:
return '-bezgalība';
}
break;
case 'ru':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return 'бесконечность';
case -Infinity:
return '-бесконечность';
}
break;
}
return returnValue;
}
);
},
LOCALE_NUMERALS_IE11_WIN7_8:
function ()
{
this.arabicNaNString = 'ليس\xa0برقم';
registerNumberToLocaleStringAdapter
(
this,
function (locale)
{
var returnValue;
var number;
switch (locale)
{
case 'ar':
case 'ar-td':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '+لا\xa0نهاية';
case -Infinity:
return '-لا\xa0نهاية';
}
break;
case 'cz':
number = Number(this);
if (isNaN(number))
returnValue = 'Není\xa0číslo';
break;
case 'el':
number = Number(this);
if (isNaN(number))
returnValue = 'μη\xa0αριθμός';
else
{
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return 'Άπειρο';
case -Infinity:
return '-Άπειρο';
}
}
break;
case 'he':
number = Number(this);
if (isNaN(number))
returnValue = 'לא\xa0מספר';
break;
case 'ja':
number = Number(this);
if (isNaN(number))
returnValue = 'NaN\xa0(非数値)';
else
{
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '+∞';
case -Infinity:
return '-∞';
}
}
break;
case 'lt':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return 'begalybė';
case -Infinity:
return '-begalybė';
}
break;
case 'pl':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '+nieskończoność';
case -Infinity:
return '-nieskończoność';
}
break;
case 'ru':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return 'бесконечность';
case -Infinity:
return '-бесконечность';
}
break;
case 'zh':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '正无穷大';
case -Infinity:
return '负无穷大';
}
break;
case 'zh-cn':
number = Number(this);
if (isNaN(number))
returnValue = '非数字';
break;
}
return returnValue;
}
);
},
LOCALE_NUMERALS_IE11_WIN8:
function ()
{
registerNumberToLocaleStringAdapter
(
this,
function (locale)
{
var returnValue;
switch (locale)
{
case 'lv':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '∞';
case -Infinity:
return '-∞';
}
break;
case 'ru':
switch (+this) // In Internet Explorer 9, +this is different from this.
{
case Infinity:
return '∞';
case -Infinity:
return '-∞';
}
break;
}
return returnValue;
}
);
},
LOCATION:
function ()
{
Expand Down
Loading