Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hughsk/ast-declaration-source
Given an esprima/acorn-style AST, approximately find the original declaration node responsible for a variable
https://github.com/hughsk/ast-declaration-source
Last synced: 12 days ago
JSON representation
Given an esprima/acorn-style AST, approximately find the original declaration node responsible for a variable
- Host: GitHub
- URL: https://github.com/hughsk/ast-declaration-source
- Owner: hughsk
- License: other
- Created: 2015-05-16T05:10:57.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-05-16T05:11:01.000Z (over 9 years ago)
- Last Synced: 2024-10-17T16:41:25.347Z (22 days ago)
- Language: JavaScript
- Size: 97.7 KB
- Stars: 3
- Watchers: 3
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# ast-declaration-source
![](http://img.shields.io/badge/stability-experimental-orange.svg?style=flat)
![](http://img.shields.io/npm/v/ast-declaration-source.svg?style=flat)
![](http://img.shields.io/npm/dm/ast-declaration-source.svg?style=flat)
![](http://img.shields.io/npm/l/ast-declaration-source.svg?style=flat)Given an esprima/acorn-style AST, approximately find the original
declaration node responsible for a variable.## Usage
[![NPM](https://nodei.co/npm/ast-declaration-source.png)](https://nodei.co/npm/ast-declaration-source/)
### `declaration = source(node)`
Given a `node` within an AST generated by [esprima](http://ghub.io/esprima)
or [acorn](http://ghub.io/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](http://ghub.io/astw) or a similar package
to add the "parent" properties to each node required for
`ast-declaration-source` to successfully navigate the tree.``` javascript
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](http://github.com/hughsk/ast-declaration-source/blob/master/LICENSE.md) for details.