energy
Version:
Simple cross-platform event emitter
98 lines (77 loc) • 3.37 kB
Markdown
# energy
#### simple [cross-platform](#platforms) event emitter based on [`EventEmitter`](http://nodejs.org/api/events.html)
## API
#### Create an emitter instance
```js
var energy = require('energy')
var emitter = energy()
```
Or use `new` if you prefer. Either way works :)
```js
var energy = require('energy')
var emitter = new energy()
```
#### Methods
- [emitter.<b>on</b>(event, listener)](#emitter-on)
- [emitter.<b>off</b>(event?, listener?, quota?)](#emitter-off)
- [emitter.<b>emit</b>(event, ...args)](#emitter-emit)
- [emitter.<b>once</b>(event, listener)](#emitter-once)
- [emitter.<b>clone</b>()](#emitter-clone)
- [emitter.<b>listeners</b>(event)](#emitter-listeners)
- [emitter.<b>init</b>()](#emitter-init)
- [emitter.<b>to</b>(target)](#emitter-to)
- [<b>energy</b>.to(target)](#energy-to)
- [<b>energy</b>.applies(fns, scope, args, breaker?)](#energy-applies)
#### Parameters
- <var>emitter</var> refers to an `energy()` object
- <var>event</var> refers to an event name
- <var>listener</var> refers to a function that listens to an event
<a name="emitter-on"></a>
#### `emitter.on(event, listener)`
- Add <var>listener</var> for <var>event</var>
- <b>@return</b> emitter
<a name="emitter-off"></a>
#### `emitter.off(event?, listener?, quota?)`
- Remove listener(s)
- `.off()` removes all listeners for all events
- `.off(event)` removes all <var>event</var> listeners
- `.off(event, listener)` removes all occurrences of <var>event</var> <var>listener</var>
- `.off(event, listener, quota)` remove <var>quota</var> occurrences of <var>event</var> <var>listener</var>
- <b>@return</b> emitter
<a name="emitter-emit"></a>
#### `emitter.emit(event, ...args)`
- Fire <var>event</var> listeners (in sequence) with the supplied arguments
- Listeners run in the context of <var>emitter</var>
- <b>@return</b> integer (number of listeners that fired)
<a name="emitter-once"></a>
#### `emitter.once(event, listener)`
- Add a one-time <var>event</var> <var>listener</var>
- <b>@return</b> <var>emitter</var>
<a name="emitter-clone"></a>
#### `emitter.clone()`
- Clone an emitter at its current state
- <b>@return</b> a new emitter
<a name="emitter-listeners"></a>
#### `emitter.listeners(event)`
- Access the listeners array for the specified <var>event</var>
- <b>@return</b> array (reference)
<a name="emitter-init"></a>
#### `emitter.init()`
- Reinitialize an emitter
- <b>@return</b> <var>emitter</var>
<a name="emitter-to"></a>
#### `emitter.to(target)`
- Make <var>target</var> [emitter-like](../../issues/3) based on `emitter` as the source.
- <b>@return</b> <var>emitter</var>
<a name="energy-to"></a>
#### `energy.to(target)`
- Make <var>target</var> emitter-like based on a `energy()` object as the source
- <b>@return</b> <var>target</var> with emitter methods and properties
<a name="energy-applies"></a>
#### `energy.applies(fns, scope, args, breaker?)`
- Apply each function with <var>scope</var> and <var>args</var>
- If <var>breaker</var> is defined, then functions can return <var>breaker</var> to abort subsequent applies
- <b>@return</b> integer (number of functions that fired)
<a name="platforms"></a>
## Compatibility
Works in [node](http://nodejs.org) **and** in any browser. Tested in node, Chrome, FF, Opera, IE8