scratch – Blame information for rev 117

Subversion Repositories:
Rev:
Rev Author Line No. Line
117 office 1 /*=========================
2 Events/Callbacks/Plugins Emitter
3 ===========================*/
4 function normalizeEventName (eventName) {
5 if (eventName.indexOf('on') !== 0) {
6 if (eventName[0] !== eventName[0].toUpperCase()) {
7 eventName = 'on' + eventName[0].toUpperCase() + eventName.substring(1);
8 }
9 else {
10 eventName = 'on' + eventName;
11 }
12 }
13 return eventName;
14 }
15 s.emitterEventListeners = {
16  
17 };
18 s.emit = function (eventName) {
19 // Trigger callbacks
20 if (s.params[eventName]) {
21 s.params[eventName](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
22 }
23 var i;
24 // Trigger events
25 if (s.emitterEventListeners[eventName]) {
26 for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {
27 s.emitterEventListeners[eventName][i](arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
28 }
29 }
30 // Trigger plugins
31 if (s.callPlugins) s.callPlugins(eventName, arguments[1], arguments[2], arguments[3], arguments[4], arguments[5]);
32 };
33 s.on = function (eventName, handler) {
34 eventName = normalizeEventName(eventName);
35 if (!s.emitterEventListeners[eventName]) s.emitterEventListeners[eventName] = [];
36 s.emitterEventListeners[eventName].push(handler);
37 return s;
38 };
39 s.off = function (eventName, handler) {
40 var i;
41 eventName = normalizeEventName(eventName);
42 if (typeof handler === 'undefined') {
43 // Remove all handlers for such event
44 s.emitterEventListeners[eventName] = [];
45 return s;
46 }
47 if (!s.emitterEventListeners[eventName] || s.emitterEventListeners[eventName].length === 0) return;
48 for (i = 0; i < s.emitterEventListeners[eventName].length; i++) {
49 if(s.emitterEventListeners[eventName][i] === handler) s.emitterEventListeners[eventName].splice(i, 1);
50 }
51 return s;
52 };
53 s.once = function (eventName, handler) {
54 eventName = normalizeEventName(eventName);
55 var _handler = function () {
56 handler(arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
57 s.off(eventName, _handler);
58 };
59 s.on(eventName, _handler);
60 return s;
61 };