Skip to content

Commit e8c0969

Browse files
Initial release
1 parent 8edd228 commit e8c0969

File tree

3 files changed

+102
-1
lines changed

3 files changed

+102
-1
lines changed

README.md

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,51 @@
1-
# edispatcher
21
Event Dispatcher
2+
======
3+
Tiny dependency free event dispatcher
4+
5+
6+
## Install
7+
8+
Use npm to install just run
9+
10+
```bash
11+
npm install edispatcher
12+
```
13+
14+
## Usage
15+
16+
```javascript
17+
var dispatcher = require('edispatcher');
18+
19+
dispatcher.on('event', function (event, data) {
20+
console.log('Got event with data ' + data);
21+
});
22+
23+
dispatcher.send('event', 'data');
24+
```
25+
26+
## Methods
27+
28+
### on(event_name, callback)
29+
30+
Dispatch triggered event
31+
- *event_name* - name of event as string
32+
- *callback* - callback function to trigger. It applies event name, passed data, source and event suscribers optional
33+
34+
The method returns id of subscriber
35+
36+
### off(id)
37+
38+
Disable trigger handler
39+
- *id* - identifier of subscriber
40+
41+
### all(callback)
42+
43+
Execute on any triggered event
44+
- *callback* - callback function to trigger
45+
46+
### send(event_name, data, source)
47+
48+
Trigger new event
49+
- *event_name* - name of event to be triggered as string
50+
- *data* - data that should be passed
51+
- *source* - trigger source

index.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
module.exports = {
2+
subscribers: {},
3+
4+
on: function(event_name, callback) {
5+
(this.subscribers[event_name] = this.subscribers[event_name] || []).push(
6+
callback
7+
);
8+
return callback;
9+
},
10+
11+
off: function(id) {
12+
for (var event_name in this.subscribers) {
13+
var event_subscribers = this.subscribers[event_name];
14+
for (var i = 0; i < event_subscribers.length; i++) {
15+
if (event_subscribers[i] === id) {
16+
event_subscribers.splice(i, 1);
17+
}
18+
}
19+
}
20+
},
21+
22+
all: function(callback) {
23+
return this.on("*", callback);
24+
},
25+
26+
send: function(event_name, data, source) {
27+
var event_subscribers =
28+
(this.subscribers[event_name] || []).concat(this.subscribers["*"] || []);
29+
for (var i = 0; i < event_subscribers.length; i++) {
30+
event_subscribers[i](event_name, data, source, event_subscribers);
31+
}
32+
}
33+
};

package.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"name": "edispatcher",
3+
"version": "1.0.0",
4+
"description": "Tiny dependency free event dispatcher",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1"
8+
},
9+
"repository": {
10+
"type": "git",
11+
"url": "git+https://github.com/dmitrykuzmenkov/edispatcher.git"
12+
},
13+
"author": "Dmitry Kuzmenkov <dmitry@wagh.ru>",
14+
"license": "MIT",
15+
"bugs": {
16+
"url": "https://github.com/dmitrykuzmenkov/edispatcher/issues"
17+
},
18+
"homepage": "https://github.com/dmitrykuzmenkov/edispatcher#readme"
19+
}

0 commit comments

Comments
 (0)