ast-declaration-source
v1.0.0
Published
Given an esprima/acorn-style AST, approximately find the original declaration node responsible for a variable
Downloads
6
Maintainers
Readme
ast-declaration-source
Given an esprima/acorn-style AST, approximately find the original declaration node responsible for a variable.
Usage
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.