js2 0.3.20 → 0.3.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. data/CHANGELOG +3 -0
  2. data/lib/js2/browser.js +27 -1
  3. data/lib/js2/js2.js +27 -1
  4. metadata +3 -5
data/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ 0.3.21
2
+ * Adding event emitter
3
+
1
4
  0.3.20
2
5
  * SYNTAX: fixed keyword "module" to only be triggered in proper context.
3
6
 
data/lib/js2/browser.js CHANGED
@@ -19,7 +19,7 @@ function mainFunction (arg) {
19
19
 
20
20
  var JS2 = root.JS2 = mainFunction;
21
21
  var js2 = root.js2 = JS2;
22
- js2.VERSION = "0.3.20";
22
+ js2.VERSION = "0.3.21";
23
23
 
24
24
  JS2.ROOT = JS2;
25
25
 
@@ -177,6 +177,32 @@ function mainFunction (arg) {
177
177
  callback(assert);
178
178
  };
179
179
 
180
+ function addListener(type, listener) {
181
+ var events = this.__$events || (this.__$events = {});
182
+ this.emit('newListener', type, listener);
183
+ if (!events[type]) events[type] = [];
184
+ events[type].push(listener);
185
+ }
186
+
187
+ JS2.EventEmitter = JS2.Module.extend({
188
+ emit: function () {
189
+ // TODO optimize
190
+ var type = arguments[0];
191
+ var events = this.__$events || (this.__$events = {});
192
+ var handlers = events[type];
193
+
194
+ if (!handlers) return false;
195
+
196
+ var args = [];
197
+ for (var i=1,len=arguments.length; i<len; i++) args[i-1] = arguments[i];
198
+ for (var i=0,len=handlers.length; i<len; i++) handlers[i].apply(this, args);
199
+ },
200
+
201
+ addListener: addListener,
202
+ on: addListener
203
+ });
204
+
205
+
180
206
 
181
207
  return JS2;
182
208
  })(undefined, JS2);
data/lib/js2/js2.js CHANGED
@@ -14,7 +14,7 @@ function mainFunction (arg) {
14
14
 
15
15
  var JS2 = root.JS2 = mainFunction;
16
16
  var js2 = root.js2 = JS2;
17
- js2.VERSION = "0.3.20";
17
+ js2.VERSION = "0.3.21";
18
18
 
19
19
  JS2.ROOT = JS2;
20
20
 
@@ -171,6 +171,32 @@ function mainFunction (arg) {
171
171
  callback(assert);
172
172
  };
173
173
 
174
+ function addListener(type, listener) {
175
+ var events = this.__$events || (this.__$events = {});
176
+ this.emit('newListener', type, listener);
177
+ if (!events[type]) events[type] = [];
178
+ events[type].push(listener);
179
+ }
180
+
181
+ JS2.EventEmitter = JS2.Module.extend({
182
+ emit: function () {
183
+ // TODO optimize
184
+ var type = arguments[0];
185
+ var events = this.__$events || (this.__$events = {});
186
+ var handlers = events[type];
187
+
188
+ if (!handlers) return false;
189
+
190
+ var args = [];
191
+ for (var i=1,len=arguments.length; i<len; i++) args[i-1] = arguments[i];
192
+ for (var i=0,len=handlers.length; i<len; i++) handlers[i].apply(this, args);
193
+ },
194
+
195
+ addListener: addListener,
196
+ on: addListener
197
+ });
198
+
199
+
174
200
 
175
201
  return JS2;
176
202
  })(undefined, JS2);
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: js2
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.20
5
+ version: 0.3.21
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeff Su
@@ -10,8 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-14 00:00:00 +08:00
14
- default_executable:
13
+ date: 2011-09-14 00:00:00 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: therubyracer
@@ -44,7 +43,6 @@ files:
44
43
  - lib/js2/browser.js
45
44
  - lib/js2/js2.js
46
45
  - CHANGELOG
47
- has_rdoc: true
48
46
  homepage: http://jeffsu.github.com/js2
49
47
  licenses: []
50
48
 
@@ -68,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
68
66
  requirements: []
69
67
 
70
68
  rubyforge_project:
71
- rubygems_version: 1.6.2
69
+ rubygems_version: 1.8.9
72
70
  signing_key:
73
71
  specification_version: 3
74
72
  summary: Javascript Sugar