static-eval
Advanced tools
Comparing version 0.0.0 to 0.1.0
19
index.js
@@ -9,2 +9,10 @@ module.exports = function (ast, vars) { | ||
} | ||
else if (node.type === 'UnaryExpression'){ | ||
var val = walk(node.argument) | ||
if (node.operator === '+') return +val | ||
if (node.operator === '-') return -val | ||
if (node.operator === '~') return ~val | ||
if (node.operator === '!') return !val | ||
return FAIL | ||
} | ||
else if (node.type === 'ArrayExpression') { | ||
@@ -28,3 +36,3 @@ var xs = []; | ||
if (value === FAIL) return FAIL; | ||
obj[prop.key.value] = value; | ||
obj[prop.key.value || prop.key.name] = value; | ||
} | ||
@@ -40,2 +48,6 @@ return obj; | ||
var op = node.operator; | ||
if (op === '==') return l == r; | ||
if (op === '===') return l === r; | ||
if (op === '!=') return l != r; | ||
if (op === '!==') return l !== r; | ||
if (op === '+') return l + r; | ||
@@ -86,2 +98,7 @@ if (op === '-') return l - r; | ||
} | ||
else if (node.type === 'ConditionalExpression') { | ||
var val = walk(node.test) | ||
if (val === FAIL) return FAIL; | ||
return val ? walk(node.consequent) : walk(node.alternate) | ||
} | ||
else return FAIL; | ||
@@ -88,0 +105,0 @@ })(ast); |
{ | ||
"name": "static-eval", | ||
"version": "0.0.0", | ||
"version": "0.1.0", | ||
"description": "evaluate statically-analyzable expressions", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -30,1 +30,9 @@ var test = require('tape'); | ||
}); | ||
test('boolean', function (t) { | ||
t.plan(1); | ||
var src = '[ 1===2+3-16/4, [2]==2, [2]!==2, [2]!==[2] ]'; | ||
var ast = parse(src).body[0].expression; | ||
t.deepEqual(evaluate(ast), [ true, true, true, true ]); | ||
}); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
8974
145