@putout/compare
Version:
compare AST-nodes according to 🦎 PutoutScript
49 lines (40 loc) • 977 B
JavaScript
import {types} from '@putout/babel';
import {
isEqualBody,
isEqualAnyObject,
isEqualAnyArray,
isLinkedNode,
isLinkedId,
isLinkedRegExp,
isEqualNop,
} from './is.js';
const {
isIdentifier,
isStringLiteral,
} = types;
const comparators = [
isEqualAnyObject,
isEqualAnyArray,
isEqualNop,
isLinkedAndIdentifier,
isLinkedAndStringLiteral,
isLinkedId,
isLinkedRegExp,
isEqualBody,
];
export const runTopLevelComparators = (node, templateNode) => {
let i = -1;
const n = comparators.length;
while (++i < n) {
const compare = comparators[i];
if (compare(node, templateNode))
return true;
}
return false;
};
function isLinkedAndIdentifier(node, templateNode) {
return isIdentifier(node) && isLinkedNode(templateNode);
}
function isLinkedAndStringLiteral(node, templateNode) {
return isStringLiteral(node) && isLinkedNode(templateNode);
}