eslint-plugin-de-morgan
Version:
ESLint plugin for transforming negated boolean expressions via De Morgan’s laws
37 lines (36 loc) • 856 B
JavaScript
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