Skip to content

Instantly share code, notes, and snippets.

@zerobias
Created August 3, 2018 15:04
Show Gist options
  • Save zerobias/1c7e762e4d7cbb71cfaf561a66626e39 to your computer and use it in GitHub Desktop.
Save zerobias/1c7e762e4d7cbb71cfaf561a66626e39 to your computer and use it in GitHub Desktop.
'use strict';
var Sister;
/**
* @link https://github.com/gajus/sister for the canonical source repository
* @license https://github.com/gajus/sister/blob/master/LICENSE BSD 3-Clause
*/
Sister = function () {
var sister = {},
events = {};
/**
* @name handler
* @function
* @param {Object} data Event data.
*/
/**
* @param {String} name Event name.
* @param {handler} handler
* @return {listener}
*/
sister.on = function (name, handler) {
var listener = {name: name, handler: handler};
events[name] = events[name] || [];
events[name].unshift(listener);
return listener;
};
/**
* @param {listener}
*/
sister.off = function (listener) {
var index = events[listener.name].indexOf(listener);
if (index !== -1) {
events[listener.name].splice(index, 1);
}
};
/**
* @param {String} name Event name.
* @param {Object} data Event data.
*/
sister.trigger = function (name, data) {
var listeners = events[name],
i;
if (listeners) {
i = listeners.length;
while (i--) {
listeners[i].handler(data);
}
}
};
return sister;
};
module.exports = Sister;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment