New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

cldrpluralruleparser

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cldrpluralruleparser - npm Package Compare versions

Comparing version 1.1.3 to 1.2.0

plurals.xml

14

package.json

@@ -5,3 +5,3 @@ {

"description": "Node module to find out the plural form for a given number in a language by parsing CLDR plural form rules.",
"version": "1.1.3",
"version": "1.2.0",
"repository": {

@@ -13,10 +13,8 @@ "url": "https://github.com/santhoshtr/CLDRPluralRuleParser"

},
"main": "./src/./src/cli.js",
"licenses": [
{
"type": "MIT",
"url": "http://opensource.org/licenses/MIT"
}
],
"main": "./src/cli.js",
"license": "MIT",
"dependencies": {},
"peerDependencies": {
"cldr-data": ">=31"
},
"devDependencies": {},

@@ -23,0 +21,0 @@ "optionalDependencies": {},

@@ -9,3 +9,2 @@ /**

*
* @version 0.1.0
* @source https://github.com/santhoshtr/CLDRPluralRuleParser

@@ -328,3 +327,3 @@ * @author Santhosh Thottingal <santhosh.thottingal@gmail.com>

return parseInt(result[0], 10) % parseInt(result[4], 10);
return parseFloat(result[0]) % parseInt(result[4], 10);
}

@@ -469,3 +468,3 @@

for (i = 0; i < range_list.length; i++) {
if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
if (parseInt(range_list[i], 10) === parseFloat(result[0])) {
return (result[1][0] !== 'not');

@@ -472,0 +471,0 @@ }

@@ -14,3 +14,4 @@ /* global pluralRuleParser, QUnit, jQuery */

'n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000': {
pass: [2, 2.0, 2.00, 2.000, 2.0000]
pass: [2, 2.0, 2.00, 2.000, 2.0000],
fail: [2.1]
},

@@ -40,3 +41,3 @@ 'n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …': {

pass: [1],
fail: [1.3]
fail: [1.3, '1.0']
},

@@ -69,5 +70,9 @@ 'v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …': {

fail: [.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1]
},
'n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …': {
pass: [0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0],
fail: [0.1, 0.2, 1.0, 1.1, 1.2, 1.9, 10.2, 100.2, 1000.2]
}
}, function(rule, expected) {
QUnit.test(rule, function(assert) {
}, function (rule, expected) {
QUnit.test(rule, function (assert) {
// Turn into arrays

@@ -79,3 +84,3 @@ var pass = expected.pass ?

jQuery.each(pass, function(i, number) {
jQuery.each(pass, function (i, number) {
assert.strictEqual(

@@ -87,6 +92,6 @@ pluralRuleParser(rule, number),

});
jQuery.each(fail, function(i, number) {
jQuery.each(fail, function (i, number) {
assert.strictEqual(
// pluralRuleParser returns null or false. Cast to boolean with !!.
!! pluralRuleParser(rule, number),
!!pluralRuleParser(rule, number),
false,

@@ -99,19 +104,23 @@ ' n=' + number + ' should fail'

function eachRule(plurals, callback) {
var locale, rules, count;
for (locale in plurals) {
rules = plurals[locale];
for (count in rules) {
callback(rules[count]);
}
}
}
// Make sure we can parse all plural rules with out errors
$.ajax({
type: 'GET',
url: '../data/plurals.xml',
dataType: 'xml'
}).done(function(xml) {
QUnit.test('Parsing test', function(assert) {
var pluralRules, localeStr, locales, plurals, number,
j, rule, integerSamples, decimalSamples;
plurals = xml.getElementsByTagName('pluralRule');
for (var i = 0; i < plurals.length; i++) {
jQuery.getJSON('../data/plurals.json').done(function (cldr) {
QUnit.test('Parsing test', function (assert) {
var plurals, number, j, integerSamples, decimalSamples;
plurals = cldr.supplemental['plurals-type-cardinal'];
eachRule(plurals, function(rule) {
integerSamples = decimalSamples = [];
rule = plurals[i].textContent;
// Try whether we can parse the rule
assert.notEqual(pluralRuleParser(rule, i), null, rule);
assert.notEqual(pluralRuleParser(rule, 1), null, rule);
// Get sample numbers from the rule.
if (rule.split('@')[1].indexOf('integer') == 0) {
if (rule.split('@')[1].indexOf('integer') === 0) {
integerSamples = rule.split('@')[1].replace('integer', '').split(',');

@@ -123,19 +132,27 @@ }

// Test all integers
for (var k = 0; k < integerSamples.length; k++) {
number = integerSamples[k].trim();
if (!number) continue;
for (j = 0; j < integerSamples.length; j++) {
number = integerSamples[j].trim();
if (!number) {
continue;
}
number = parseInt(number.split('~')[0]);
if (!number || number === NaN) continue;
if (!number || isNaN(number)) {
continue;
}
assert.equal(pluralRuleParser(rule, number), true, '[' + number + ']' + rule);
}
// Test all decimals
for (var k = 0; k < integerSamples.length; k++) {
number = integerSamples[k].trim();
if (!number) continue;
for (j = 0; j < integerSamples.length; j++) {
number = integerSamples[j].trim();
if (!number) {
continue;
}
number = parseFloat(number.split('~')[0]);
if (!number || number === NaN) continue;
if (!number || isNaN(number)) {
continue;
}
assert.equal(pluralRuleParser(rule, number), true, '[' + number + ']' + rule);
}
}
});
});
});
});

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc