Skip to content

trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST

License

Notifications You must be signed in to change notification settings

estools/esdispatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esdispatch

Trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST.

Install

npm install --save esdispatch

Examples

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.

About

trigger events based on esquery selectors during a traversal of a SpiderMonkey format AST

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published