UNPKG

d2-ui

Version:
76 lines (69 loc) 1.93 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = extractValueFromBinaryExpression; var _index = require('./index'); var _index2 = _interopRequireDefault(_index); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * 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) { var operator = value.operator; var left = value.left; var right = value.right; var leftVal = (0, _index2.default)(left); var rightVal = (0, _index2.default)(right); switch (operator) { 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; 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; case '/': return leftVal / rightVal; case '%': return leftVal % rightVal; case '|': return leftVal | rightVal; case '^': return leftVal ^ rightVal; case '&': return leftVal & rightVal; case 'in': return leftVal in rightVal; case 'instanceof': return leftVal instanceof rightVal; default: return undefined; } }