node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »

ast-declaration-source

ast-declaration-source

Given an esprima/acorn-style AST, approximately find the original declaration node responsible for a variable.

Usage

NPM

declaration = source(node)

Given a node within an AST generated by esprima or acorn, determine the original declaration node in the tree.

Returns undefined if a suitable node could not be found.

Note that you'll need to use astw or a similar package to add the "parent" properties to each node required for ast-declaration-source to successfully navigate the tree.

var source    = require('ast-declaration-source')
var escodegen = require('escodegen')
var acorn     = require('acorn')
var astw      = require('astw')
var fs        = require('fs')
 
var src      = fs.readFileSync(__filename, 'utf8')
var ast      = acorn.parse(src)
 
// required to assign "parent" properties 
// to each node 
astw(ast)(function(){})
 
var srcNode  = ast.body[6].declarations[0].init.arguments[0]
var declNode = source(srcNode)
 
console.log('original usage:')
console.log(escodegen.generate(srcNode.parent))
console.log()
 
console.log('declaration:')
console.log(escodegen.generate(declNode.parent.parent))
console.log()

License

MIT. See LICENSE.md for details.