Compare AST-nodes.
npm i @putout/compare
node-AST-nodeorcodethat will be generated;template- template string with template variables;
const {operator} = require('putout');
const {template} = operator;
const node = template.ast('const [] = a');
getTemplateValues(node, 'const __array = array');
// returns
({
__array: {
type: 'ArrayPattern',
//...etc
},
});node-AST-nodeorcodethat will be generated;baseNodeAST-nodewith support oftemplate variables.
Any node.
compare('const x = data', 'const __ = __');
compare('const {x} = data', 'const __ = __');
compare('const x = {data}', 'const __ = __');
// returns
true;ObjectPattern or ObjectExpression with any count of properties.
compare('const {} = data', 'const __object = __');
compare('const {hello} = data', 'const __object = __');
// returns
true;ArrayPattern or ArrayExpression with any count of elements.
compare('const [] = data', 'const __array = __');
compare('const [hello] = data', 'const __array = __');
compare('const hello = [data]', 'const __ = __array');
// returns
true;Any count of arguments:
compare('(a, b, c) => {}', '(__args) => {}');
compare('(a, b) => {}', '(__args) => {}');
compare('() => {}', '(__args) => {}');
// returns
true;Any count of imports:
compare('import React, {Component} from "react"', 'import __imports from "react"');Any string literal.
compare('const a = "hello"', 'const __ = "__"');Linked literal
compare('const __a = "hello"', 'const __a = "hello"');Linked string literal.
compare('const a = "hello"', 'const __a = "__b"');Linked template literal.
compare('const a = `hello`', 'const __a = `__b`');
// returns
true;Any BlockStatement.
compare('const a = () => 0', 'const a = () => __body');
// returns
false;
compare('const a = () => {}', 'const a = () => __body');
// returns
true;Any Function with no arguments and empty body;
compare('const a = () => {}', 'const __a = __nop');
// returns
true;
compare('const a = async () => {}', 'const a = __nop');
// returns
true;Any `Identifier
compare('const a = 5', 'const __identifier = 5');
// returns
true;Any regexp
compare('const a = /hello/g', 'const a = /__a/');
// returns
true;MIT