JSPM

  • Created
  • Published
  • Downloads 28501
  • Score
    100M100P100Q145083F
  • License MIT

compare ast-nodes

Package Exports

  • @putout/compare

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@putout/compare) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

putout-compare NPM version Dependency Status

Compare AST-nodes.

Install

npm i @putout/compare

API

getTemplateValues(node, template)

  • node - AST-node or code that 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
    }
}

compare (node, baseNode)

  • node - AST-node or code that will be generated;
  • baseNode AST-node with support of template variables.

Supported template variables:

__

Any node.

compare('const x = data', 'const __ = __');
compare('const {x} = data', 'const __ = __');
compare('const x = {data}', 'const __ = __');
// returns
true
__object

ObjectPattern or ObjectExpression with any count of properties.

compare('const {} = data', 'const __object = __')
compare('const {hello} = data', 'const __object = __')
// returns
true
__array

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
__args

Any count of arguments:

compare('(a, b, c) => {}', '(__args) => {}');
compare('(a, b) => {}', '(__args) => {}');
compare('() => {}', '(__args) => {}');
// returns
true
__imports

Any count of imports:

compare('import React, {Component} from "react"', 'import __imports from "react"');
"__"

Any string literal.

compare('const a = "hello"', 'const __ = "__"');
__a

Linked literal

compare('const __a = "hello"', 'const __a = "hello"');
"__a"

Linked string literal.

compare('const a = "hello"', 'const __a = "__b"');
"__body"

Any BlockStatement.

compare('const a = () => 0, 'const a = () => __body');
// returns
false

compare('const a = () => {}, 'const a = () => __body');
// returns
true
"__nop"

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

License

MIT