Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/estools/esdispatch
trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST
https://github.com/estools/esdispatch
ast ecmascript estree javascript
Last synced: 3 months ago
JSON representation
trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST
- Host: GitHub
- URL: https://github.com/estools/esdispatch
- Owner: estools
- License: bsd-3-clause
- Created: 2013-09-29T13:55:33.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-09-09T16:39:14.000Z (over 10 years ago)
- Last Synced: 2024-10-05T16:19:37.377Z (4 months ago)
- Topics: ast, ecmascript, estree, javascript
- Language: CoffeeScript
- Homepage:
- Size: 146 KB
- Stars: 12
- Watchers: 5
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# esdispatch
Trigger events based on [esquery](https://github.com/jrfeenst/esquery) selectors during a traversal of a [SpiderMonkey format AST](https://developer.mozilla.org/en-US/docs/SpiderMonkey/Parser_API).
## Install
npm install --save esdispatch
## Examples
```js
var counter = 0, dispatcher = new ESDispatcher;
dispatcher.on(
'UpdateExpression[operator="++"] > Identifier[name=i]',
function(node, ancestors) { ++counter; }
);
dispatcher.observe(spidermonkeyAST, function() {
counter; // 4
});
```## API
#### `new ESDispatcher` → ESDispatcher instance
The ESDispatcher constructor takes no arguments.#### `ESDispatcher::addListener(selector, listener)` → void
Invoke `listener` whenever esdispatch walks over a node that matches
`selector`. `listener` is given two arguments: the node that matched the
selector, and a list containing the ancestors of that node. `listener` may also
be an object containing an `enter` and, optionally, a `leave` function. In that
case, the `enter` function will be called in pre-order, and the `leave`
function will be called in post-order. Aliased as `ESDispatcher::on`.#### `ESDispatcher::once(selector, listener)` → void
Adds a listener that is invoked only the first time `selector` matches.#### `ESDispatcher::observe(ast, onFinished)` → void
Begin a traversal using the given SpiderMonkey AST, triggering any listeners
associated with matching queries. `onFinished`, if given, is called with no
arguments once the traversal is completed.