hevemitter v1.4.3
HevEmitter
(http://jenkins.plediii.net:8080/buildStatus/icon?job=hevemitter master)
A Hierarchical event emitter for javascript.
Examples
Creating a new emitter
var HevEmitter = require('hevemitter');
var H = HevEmitter.EventEmitter;
var h = new H();Listening for hierarchical events
h.on(['finn', 'the', 'human'], function () {
console.log('jake the dog');
});
h.on(['finn', 'the', 'peasant'], function (msg) {
console.log(msg, ' the cat');
});The event listener may only receive one data argument. Any second argument is assumed to be a callback function used for short circuiting the event hierarchy.
Emitting a hierarchical event
h.emit(['finn', 'the', '*'], 'cake');Here the * means to trigger all events at that level. With the
listeners from the previous example, we expect the output:
jake the dog
cake the catEmitting to all listeners in a hierarchy
This would trigger the same output:
h.emit(['finn', '**'], 'cake');Here, ** refers to all listeners to events at that level, the parent
route (['finn']), and all descendants.
Listening to all events in a hierarchy
h.on(['finn', '**'], function () {
console.log('princess bubblegum');
});This would listen to an event route of any length, with 'finn' in the first position.
For example
h.emit(['finn', 'the', 'human'], 'cake');Outputs:
princess bubblegum
jake the dogThe specific route ['finn', 'the', 'peasant'] did not match this
time, however the general route ['finn', '**'] did. princess
bubblegum is output before jake the dog because it is registered
lower on the hierarchy.
Removing events in a hierarchy
h.on(['*', 'the', '*'], function (msg) {
console.log('Hello ', msg);
});
h.removeAllListeners(['finn', '**']);
h.emit(['finn', 'the', '*'], 'EventEmitter');Here, we've removed all events starting with 'finn', leaving only the 'hello' listener. So the resulting output is:
Hello EventEmitterNote that removing ** events removes **, * and 'name' listeners.
Removing * removes only * listeners and 'name' listeners.
Removing 'name' listeners removes only 'name' listeners.
Using delimited strings
Event routes can be specified by delimited strings in addition to arrays.
For example
h.emit('neil/the/tyson', 'cosmos');will invoke the previously mounted ['*', 'the', '*'] listener, outputting
Hello cosmos