UNPKG

eslint-plugin-de-morgan

Version:

ESLint plugin for transforming negated boolean expressions via De Morgan’s laws

37 lines (36 loc) 856 B
'use strict' Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }) const getNodeContent = require('./get-node-content.js') const MAX_DEPTH = 100 let flattenOperands = ({ transformer, expression, predicate, depth = 0, context, }) => { if (depth > MAX_DEPTH) { return [getNodeContent.getNodeContent(expression, context).trim()] } if (predicate(expression)) { let logicalExpr = expression return [ ...flattenOperands({ expression: logicalExpr.left, depth: depth + 1, transformer, predicate, context, }), ...flattenOperands({ expression: logicalExpr.right, depth: depth + 1, transformer, predicate, context, }), ] } return [transformer(expression, context)] } exports.flattenOperands = flattenOperands