1.0.0 • Published 9 years ago

ast-declaration-source v1.0.0

Weekly downloads
7
License
MIT
Repository
github
Last release
9 years ago

ast-declaration-source

npm.io npm.io npm.io npm.io

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.