js2 0.3.20 → 0.3.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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