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

cldr

Package Overview
Dependencies
Maintainers
1
Versions
81
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cldr - npm Package Compare versions

Comparing version 0.0.4 to 0.0.5

test/cldrPluralRuleToJavaScriptAst.js

65

lib/cldrPluralRuleToJavaScriptAst.js

@@ -6,4 +6,67 @@ var fs = require('fs'),

function rangeListToJavaScriptAst(rangeListNode, lhsJavaScriptAst, withinSemantics) {
var javaScriptAst,
seenRange = false;
for (var i = rangeListNode.ranges.length - 1 ; i >= 0 ; i -= 1) {
var range = rangeListNode.ranges[i],
itemJavaScriptAst;
if (range.type === 'number') {
itemJavaScriptAst = ['binary', '===', lhsJavaScriptAst, ['num', range.value]];
} else {
// range.type === 'range'
seenRange = true;
itemJavaScriptAst = ['binary', '&&', ['binary', '>=', lhsJavaScriptAst, ['num', range.min.value]],
['binary', '<=', lhsJavaScriptAst, ['num', range.max.value]]];
}
if (javaScriptAst) {
javaScriptAst = ['binary', '||', itemJavaScriptAst, javaScriptAst];
} else {
javaScriptAst = itemJavaScriptAst;
}
}
if (seenRange && !withinSemantics) {
javaScriptAst = ['binary', '&&', ['binary', '===', lhsJavaScriptAst,
['call', ['dot', ['name', 'Math'], 'floor'], [lhsJavaScriptAst]]],
javaScriptAst];
}
return javaScriptAst;
}
function nodeToJavaScriptAst(node) {
switch (node.type) {
case 'number':
return ['num', node.value];
case 'n':
return ['name', 'n'];
case 'is':
return ['binary', '==='].concat(node.operands.map(nodeToJavaScriptAst));
case 'isnot':
return ['binary', '!=='].concat(node.operands.map(nodeToJavaScriptAst));
case 'mod':
return ['binary', '%'].concat(node.operands.map(nodeToJavaScriptAst));
case 'and':
return ['binary', '&&'].concat(node.operands.map(nodeToJavaScriptAst));
case 'or':
return ['binary', '||'].concat(node.operands.map(nodeToJavaScriptAst));
case 'not':
return ['unary-prefix', '!', nodeToJavaScriptAst(node.operands)];
case 'isnot':
return ['binary', '!=='].concat(node.operands.map(nodeToJavaScriptAst));
case 'within':
return rangeListToJavaScriptAst(node.operands[1], nodeToJavaScriptAst(node.operands[0]), true);
case 'notwithin':
return ['unary-prefix', '!', rangeListToJavaScriptAst(node.operands[1], nodeToJavaScriptAst(node.operands[0]), true)];
case 'in':
return rangeListToJavaScriptAst(node.operands[1], nodeToJavaScriptAst(node.operands[0]), false);
case 'notin':
return ['unary-prefix', '!', rangeListToJavaScriptAst(node.operands[1], nodeToJavaScriptAst(node.operands[0]), false)];
default:
throw new Error('nodeToJavaScriptAst: Unknown node type: ' + node.type);
}
}
module.exports = function (cldrPluralRule) {
return parser.parse(cldrPluralRule);
var topLevelNode = parser.parse(cldrPluralRule.replace(/^\s+|\s+$/g, '').replace(/\s{2,}/g, ' '));
return nodeToJavaScriptAst(topLevelNode);
};

2

package.json
{
"name": "cldr",
"version": "0.0.4",
"version": "0.0.5",
"description": "Library for extracting data from CLDR (the Unicode Common Locale Data Repository)",

@@ -5,0 +5,0 @@ "main": "lib/Cldr.js",

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