envjs 0.3.5 → 0.3.6
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.
- data/CHANGELOG.rdoc +6 -0
- data/README.rdoc +17 -17
- data/lib/envjs.rb +1 -1
- data/lib/envjs/env.js +1 -3
- data/lib/envjs/runtime.rb +4 -4
- data/lib/envjs/static.js +2 -2
- data/src/html/input-elements.js +2 -2
- data/src/window/event.js +1 -3
- metadata +3 -3
data/CHANGELOG.rdoc
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
=== 0.3.6 / 2010-05-31
|
2
|
+
|
3
|
+
* don't be sensitive to method case
|
4
|
+
* use different syntax for method lookup to work around Johnson wierdness
|
5
|
+
* fix sloppy syntax and handle formless form inputs
|
6
|
+
|
1
7
|
=== 0.3.5 / 2010-05-19
|
2
8
|
|
3
9
|
* dont remove the gemspec so it can be used via gh (though not commited ... ?)
|
data/README.rdoc
CHANGED
@@ -26,29 +26,29 @@ and then installing the envjs gem with
|
|
26
26
|
|
27
27
|
The envjs gem provides the envjsrb command, which functions as an extended version of the Johnson javascript shell. For example:
|
28
28
|
|
29
|
-
mbp:env-js smparkes$ envjsrb
|
30
|
-
js> this
|
31
|
-
=> [object Window 0]
|
32
|
-
js> window.location
|
33
|
-
=> about:blank
|
34
|
-
js> document.innerHTML
|
35
|
-
=> "<html><head><title></title></head><body></body></html>"
|
36
|
-
js>
|
29
|
+
mbp:env-js smparkes$ envjsrb
|
30
|
+
js> this
|
31
|
+
=> [object Window 0]
|
32
|
+
js> window.location
|
33
|
+
=> about:blank
|
34
|
+
js> document.innerHTML
|
35
|
+
=> "<html><head><title></title></head><body></body></html>"
|
36
|
+
js>
|
37
37
|
|
38
38
|
== Embedding envjs
|
39
39
|
|
40
40
|
It's also possible to embed the envjs interpreter similar to the way it's done in Johnson, e.g.,
|
41
41
|
|
42
|
-
require 'rubygems' # if necessary
|
43
|
-
require 'johnson/tracemonkey'
|
44
|
-
require 'envjs/runtime'
|
42
|
+
require 'rubygems' # if necessary
|
43
|
+
require 'johnson/tracemonkey'
|
44
|
+
require 'envjs/runtime'
|
45
45
|
|
46
|
-
envjs = Johnson::Runtime.new
|
47
|
-
envjs.extend Envjs::Runtime
|
48
|
-
window = envjs.evaluate("window")
|
49
|
-
puts window.location.to_s # == "about:blank"
|
50
|
-
puts window.document.innerHTML # == "<html><head><title></title></head><body></body></html>"
|
51
|
-
envjs.wait
|
46
|
+
envjs = Johnson::Runtime.new
|
47
|
+
envjs.extend Envjs::Runtime
|
48
|
+
window = envjs.evaluate("window")
|
49
|
+
puts window.location.to_s # == "about:blank"
|
50
|
+
puts window.document.innerHTML # == "<html><head><title></title></head><body></body></html>"
|
51
|
+
envjs.wait
|
52
52
|
|
53
53
|
You need the Runtime#wait at the end to give env.js's event loop a chance to execute queued events and timers. You may need to do this at other times as well, depending on the asynchronous nature of your application.
|
54
54
|
|
data/lib/envjs.rb
CHANGED
data/lib/envjs/env.js
CHANGED
@@ -2163,8 +2163,6 @@ $w.removeEventListener = function(type, fn){
|
|
2163
2163
|
__removeEventListener__(this, type, fn)
|
2164
2164
|
};
|
2165
2165
|
|
2166
|
-
|
2167
|
-
|
2168
2166
|
function __dispatchEvent__(target, event, bubbles){
|
2169
2167
|
try{
|
2170
2168
|
$debug("dispatching event " + event.type);
|
@@ -2289,7 +2287,7 @@ function __dispatchEvent__(target, event, bubbles){
|
|
2289
2287
|
}
|
2290
2288
|
data = $master["static"].__formSerialize__(target,undefined,boundary);
|
2291
2289
|
var options = {method: target.method || "get", referer: this.location.href};
|
2292
|
-
if (options.method === "post" || options.method === "put") {
|
2290
|
+
if (options.method.toLowerCase() === "post" || options.method.toLowerCase() === "put") {
|
2293
2291
|
options.data = data;
|
2294
2292
|
var undef;
|
2295
2293
|
data = undef;
|
data/lib/envjs/runtime.rb
CHANGED
@@ -274,7 +274,7 @@ EOJS
|
|
274
274
|
|
275
275
|
inner.load = lambda { |*files|
|
276
276
|
files.each do |f|
|
277
|
-
master
|
277
|
+
master['load'].call f, inner
|
278
278
|
end
|
279
279
|
}
|
280
280
|
|
@@ -322,7 +322,7 @@ EOJS
|
|
322
322
|
outer[k] = v
|
323
323
|
end
|
324
324
|
|
325
|
-
master
|
325
|
+
master['load'].call Envjs::EVENT_LOOP, global
|
326
326
|
|
327
327
|
static = new_global
|
328
328
|
|
@@ -334,10 +334,10 @@ EOJS
|
|
334
334
|
|
335
335
|
# fake it ...
|
336
336
|
static["isInner"] = true
|
337
|
-
master
|
337
|
+
master['load'].call Envjs::STATIC, static
|
338
338
|
master["static"] = static
|
339
339
|
|
340
|
-
master
|
340
|
+
master['load'].call Envjs::ENVJS, inner
|
341
341
|
|
342
342
|
inner = nil
|
343
343
|
end
|
data/lib/envjs/static.js
CHANGED
@@ -5002,7 +5002,7 @@ var inputElements_status = {};
|
|
5002
5002
|
|
5003
5003
|
var inputElements_onchange = {
|
5004
5004
|
onchange: function(event){
|
5005
|
-
return __eval__(this.getAttribute('onchange')||'', this)
|
5005
|
+
return __eval__(this.getAttribute('onchange')||'', this);
|
5006
5006
|
}
|
5007
5007
|
};
|
5008
5008
|
|
@@ -5124,7 +5124,7 @@ __extend__(HTMLTypeValueInputs.prototype, {
|
|
5124
5124
|
}
|
5125
5125
|
parent = parent.parentNode;
|
5126
5126
|
}
|
5127
|
-
if(parent.tagName == "FORM") {
|
5127
|
+
if(parent && parent.tagName == "FORM") {
|
5128
5128
|
var xpath = './/input[@type="radio" and @name="'+this.name+'"]';
|
5129
5129
|
var nodes =
|
5130
5130
|
this.ownerDocument.evaluate(xpath,parent, null, XPathResult.ANY_TYPE,null );
|
data/src/html/input-elements.js
CHANGED
@@ -126,7 +126,7 @@ var inputElements_status = {};
|
|
126
126
|
|
127
127
|
var inputElements_onchange = {
|
128
128
|
onchange: function(event){
|
129
|
-
return __eval__(this.getAttribute('onchange')||'', this)
|
129
|
+
return __eval__(this.getAttribute('onchange')||'', this);
|
130
130
|
}
|
131
131
|
};
|
132
132
|
|
@@ -248,7 +248,7 @@ __extend__(HTMLTypeValueInputs.prototype, {
|
|
248
248
|
}
|
249
249
|
parent = parent.parentNode;
|
250
250
|
}
|
251
|
-
if(parent.tagName == "FORM") {
|
251
|
+
if(parent && parent.tagName == "FORM") {
|
252
252
|
var xpath = './/input[@type="radio" and @name="'+this.name+'"]';
|
253
253
|
var nodes =
|
254
254
|
this.ownerDocument.evaluate(xpath,parent, null, XPathResult.ANY_TYPE,null );
|
data/src/window/event.js
CHANGED
@@ -47,8 +47,6 @@ $w.removeEventListener = function(type, fn){
|
|
47
47
|
__removeEventListener__(this, type, fn)
|
48
48
|
};
|
49
49
|
|
50
|
-
|
51
|
-
|
52
50
|
function __dispatchEvent__(target, event, bubbles){
|
53
51
|
try{
|
54
52
|
$debug("dispatching event " + event.type);
|
@@ -173,7 +171,7 @@ function __dispatchEvent__(target, event, bubbles){
|
|
173
171
|
}
|
174
172
|
data = $master["static"].__formSerialize__(target,undefined,boundary);
|
175
173
|
var options = {method: target.method || "get", referer: this.location.href};
|
176
|
-
if (options.method === "post" || options.method === "put") {
|
174
|
+
if (options.method.toLowerCase() === "post" || options.method.toLowerCase() === "put") {
|
177
175
|
options.data = data;
|
178
176
|
var undef;
|
179
177
|
data = undef;
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 3
|
8
|
-
-
|
9
|
-
version: 0.3.
|
8
|
+
- 6
|
9
|
+
version: 0.3.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- John Resig
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-05-
|
19
|
+
date: 2010-05-31 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|