You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
Object.defineProperty(exports, "__esModule", { value: true }); exports.default = extractValueFromBinaryExpression; /** * Extractor function for a BinaryExpression type value node. * A binary expression has a left and right side separated by an operator * such as `a + b`. * * @param - value - AST Value object with type `BinaryExpression` * @returns - The extracted value converted to correct type. */ function extractValueFromBinaryExpression(value) { // eslint-disable-next-line global-require
var getValue = require('./index.js').default; var operator = value.operator, left = value.left, right = value.right;
var leftVal = getValue(left); var rightVal = getValue(right);
switch (operator) { case '==': return leftVal == rightVal; // eslint-disable-line
case '!=': return leftVal != rightVal; // eslint-disable-line
case '===': return leftVal === rightVal; case '!==': return leftVal !== rightVal; case '<': return leftVal < rightVal; case '<=': return leftVal <= rightVal; case '>': return leftVal > rightVal; case '>=': return leftVal >= rightVal; case '<<': return leftVal << rightVal; // eslint-disable-line no-bitwise
case '>>': return leftVal >> rightVal; // eslint-disable-line no-bitwise
case '>>>': return leftVal >>> rightVal; // eslint-disable-line no-bitwise
case '+': return leftVal + rightVal; case '-': return leftVal - rightVal; case '*': return leftVal * rightVal; case '/': return leftVal / rightVal; case '%': return leftVal % rightVal; case '|': return leftVal | rightVal; // eslint-disable-line no-bitwise
case '^': return leftVal ^ rightVal; // eslint-disable-line no-bitwise
case '&': return leftVal & rightVal; // eslint-disable-line no-bitwise
case 'in': try { return leftVal in rightVal; } catch (err) { return false; } case 'instanceof': if (typeof rightVal !== 'function') { return false; } return leftVal instanceof rightVal; default: return undefined; } }
|