UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

78 lines (75 loc) 2.21 kB
'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; } }