Nightingale Posing Mischievously
    Have ideas to improve npm?Join in the discussion! »

    ast-replace

    1.1.3 • Public • Published

    ast-replace Build Status unstable

    Replace each matched ast-node passing a test.

    Usage

    $ npm install --save ast-replace

    var parse = require('esprima').parse;
    var generate = require('escodegen').generate;
    var replace = require('ast-replace');
     
    //add rule to replace all `foo` assignments with `bar`.
    var ast = replace(parse('foo = 1;'), {
        AssignmentExpression: {
            test: function(node){
                if (node.operator !== '=') return false;
                return node.left.name === 'foo';
            },
            replace: function(node){
                node.left.name = 'bar';
                return node;
            }
        }
    });
     
    generate(ast); //'bar = 1;'

    API

    replace(Node, replacement) → Node

    Replace node matching criterias. Replacement object defines rules to apply replacements:

    var replacement = {
        AssignmentExpression: {
            test: function (node) {
                this === replacement; //true
     
                //returning `undefined` means test is passed
            },
            replace: function (node) {
                this === replacement; //true
     
                //returning `null` replaces node
                return null;
            }
        },
     
        //supertype, matched after specific types
        Expression: {
            replace: function (node) {
                //returning `undefined` keeps node the same
            }
        }
    }
    Property Type Default Description
    test Function true Test whether node found should be replaced. Testing function should return boolean. If omitted, every node will pass the test.
    replace Function, Node, undefined, null null A replacement for a matched node. Replacing function should return a new node or null. undefined is considered as no change.

    NPM

    Install

    npm i ast-replace

    DownloadsWeekly Downloads

    8,495

    Version

    1.1.3

    License

    Unlicensed

    Last publish

    Collaborators

    • avatar