envjs 0.1.6 → 0.1.7
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/lib/envjs/env.js +93 -18
- data/lib/envjs/runtime.rb +2 -1
- data/lib/envjs/static.js +34 -4
- metadata +5 -5
data/lib/envjs/env.js
CHANGED
@@ -257,7 +257,7 @@ $env.connection = $master.connection || function(xhr, responseHandler, data){
|
|
257
257
|
//xhr.responseHeaders['Content-Length'] = headerValue+'';
|
258
258
|
//xhr.responseHeaders['Date'] = new Date()+'';*/
|
259
259
|
}catch(e){
|
260
|
-
$env.
|
260
|
+
$env.warn('failed to load response headers',e);
|
261
261
|
}
|
262
262
|
|
263
263
|
}
|
@@ -300,13 +300,20 @@ $env.connection = $master.connection || function(xhr, responseHandler, data){
|
|
300
300
|
//write data to output stream if required
|
301
301
|
if(data&&data.length&&data.length>0){
|
302
302
|
if ( xhr.method == "PUT" || xhr.method == "POST" ) {
|
303
|
-
req.body = data;
|
303
|
+
Ruby.eval("lambda { |req,data| req.body = data}").call(req,data);
|
304
|
+
// req.body = data;
|
304
305
|
}
|
305
306
|
}
|
306
307
|
|
307
|
-
|
308
|
+
try {
|
309
|
+
connection = Ruby.Net.HTTP.start( url.host, url.port );
|
310
|
+
resp = connection.request(req);
|
311
|
+
} catch(e) {
|
312
|
+
$env.warn("XHR net request failed: "+e);
|
313
|
+
// FIX: do the on error stuff ...
|
314
|
+
throw e;
|
315
|
+
}
|
308
316
|
|
309
|
-
resp = connection.request(req);
|
310
317
|
}
|
311
318
|
if(connection){
|
312
319
|
try{
|
@@ -324,7 +331,8 @@ $env.connection = $master.connection || function(xhr, responseHandler, data){
|
|
324
331
|
xhr.responseHeaders[k] = v;
|
325
332
|
});
|
326
333
|
}catch(e){
|
327
|
-
$env.error('failed to load response headers'
|
334
|
+
$env.error('failed to load response headers: '+e);
|
335
|
+
throw e;
|
328
336
|
}
|
329
337
|
|
330
338
|
xhr.readyState = 4;
|
@@ -547,7 +555,8 @@ $env.__eval__ = function(script,scope){
|
|
547
555
|
// $master.first_script_window = original_script_window;
|
548
556
|
return result;
|
549
557
|
}catch(e){
|
550
|
-
$
|
558
|
+
$warn("Exception during on* event eval: "+e);
|
559
|
+
throw e;
|
551
560
|
}
|
552
561
|
};
|
553
562
|
|
@@ -1113,7 +1122,8 @@ $env.load = function(url,xhr_options){
|
|
1113
1122
|
try{
|
1114
1123
|
$w.document.load($location,xhr_options);
|
1115
1124
|
}catch(e){
|
1116
|
-
|
1125
|
+
$warn("Exception while loading window: "+e);
|
1126
|
+
throw e;
|
1117
1127
|
}
|
1118
1128
|
};
|
1119
1129
|
|
@@ -2163,7 +2173,46 @@ try{
|
|
2163
2173
|
// print(event.type,target,handled);
|
2164
2174
|
|
2165
2175
|
if (!handled && event.type == "click" && target instanceof HTMLAnchorElement && target.href ) {
|
2166
|
-
|
2176
|
+
// window.location = target.href;
|
2177
|
+
|
2178
|
+
var url = target.href;
|
2179
|
+
|
2180
|
+
var skip = false;
|
2181
|
+
|
2182
|
+
if (url[0] === "#") {
|
2183
|
+
// print("return anchor only");
|
2184
|
+
skip = true;
|
2185
|
+
}
|
2186
|
+
|
2187
|
+
if (!skip) {
|
2188
|
+
var now = window.location.href.replace(/^file:\/\//,"").replace(/#.*/,"");
|
2189
|
+
var to = $master.first_script_window && $master.first_script_window.location.href;
|
2190
|
+
// var to = $env.location(url,window.location.href != "about:blank" ? window.location.href: undefined);
|
2191
|
+
// I'm not sure why this code is here ... looking at the FSW
|
2192
|
+
// print("nu",now,url,to);
|
2193
|
+
to = to || $env.location(url,window.location.href);
|
2194
|
+
// print("nu",now,url,to);
|
2195
|
+
if (to && to.indexOf(now)===0 && to[now.length]==="#") {
|
2196
|
+
skip = true;
|
2197
|
+
}
|
2198
|
+
}
|
2199
|
+
if (!skip) {
|
2200
|
+
if (url && url.indexOf(now)===0 && url[now.length]==="#") {
|
2201
|
+
// print("return diff anchor only");
|
2202
|
+
skip = true;
|
2203
|
+
}
|
2204
|
+
}
|
2205
|
+
if (!skip) {
|
2206
|
+
// print($location, window.location.href === $location, $location.indexOf("#")>0);
|
2207
|
+
if (url === window.location.href && $location.indexOf("#")>0) {
|
2208
|
+
// print('returning same with anchor');
|
2209
|
+
skip = true;
|
2210
|
+
}
|
2211
|
+
}
|
2212
|
+
|
2213
|
+
if (!skip){
|
2214
|
+
$env.reload(window, target.href, {referer: window.location.href});
|
2215
|
+
}
|
2167
2216
|
}
|
2168
2217
|
|
2169
2218
|
if (!handled && event.type == "click" &&
|
@@ -2179,12 +2228,18 @@ try{
|
|
2179
2228
|
try{
|
2180
2229
|
target.form.submit();
|
2181
2230
|
// __submit__(target.form);
|
2182
|
-
}catch(e){
|
2231
|
+
}catch(e){
|
2232
|
+
print("oopse",e);
|
2233
|
+
print(e.stack);
|
2234
|
+
e.backtrace && print(e.backtrace().join("\n"));
|
2235
|
+
throw e;
|
2236
|
+
};
|
2183
2237
|
delete target.form.clk;
|
2184
2238
|
}
|
2185
2239
|
|
2186
2240
|
// print(event.type,target.type,target.constructor+"");
|
2187
|
-
|
2241
|
+
// print("A",handled,event.type,target,target.type);
|
2242
|
+
if (!handled && event.type == "click" && target instanceof HTMLInputElement && ( target.type == "checkbox" || target.type == "radio" ) ) {
|
2188
2243
|
target.checked = target.checked ? "" : "checked";
|
2189
2244
|
}
|
2190
2245
|
|
@@ -2197,13 +2252,33 @@ try{
|
|
2197
2252
|
boundary = (new Date).getTime();
|
2198
2253
|
}
|
2199
2254
|
data = $master["static"].__formSerialize__(target,undefined,boundary);
|
2200
|
-
var options = {method: target.method || "get",
|
2255
|
+
var options = {method: target.method || "get", referer: this.location.href};
|
2256
|
+
if (options.method === "post" || options.method === "put") {
|
2257
|
+
options.data = data;
|
2258
|
+
var undef;
|
2259
|
+
data = undef;
|
2260
|
+
}
|
2201
2261
|
if (boundary) {
|
2202
2262
|
options["Content-Type"] = "multipart/form-data; boundary="+boundary;
|
2203
2263
|
} else {
|
2204
2264
|
options["Content-Type"] = 'application/x-www-form-urlencoded';
|
2205
2265
|
}
|
2206
2266
|
var action = target.action || window.location.href;
|
2267
|
+
if (data) {
|
2268
|
+
if (action.indexOf("?") < 0) {
|
2269
|
+
action = action + "?";
|
2270
|
+
}
|
2271
|
+
if (action[action.length-1] != "?") {
|
2272
|
+
action = action + "&";
|
2273
|
+
}
|
2274
|
+
var params = unescape(data).split("&");
|
2275
|
+
var new_params = [];
|
2276
|
+
for(var pi=0; pi < params.length; pi++) {
|
2277
|
+
var pair = params[pi].split("=");
|
2278
|
+
new_params.push(escape(pair[0])+"="+escape(pair[1]));
|
2279
|
+
}
|
2280
|
+
action = action + new_params.join("&");
|
2281
|
+
}
|
2207
2282
|
$env.reload(proxy, action, options );
|
2208
2283
|
}
|
2209
2284
|
|
@@ -2215,8 +2290,11 @@ try{
|
|
2215
2290
|
__dispatchEvent__(target.parentNode, event, bubbles);
|
2216
2291
|
}
|
2217
2292
|
}catch(e){
|
2218
|
-
|
2219
|
-
print(e.stack);
|
2293
|
+
$warn("Exception while dispatching events: "+e);
|
2294
|
+
// print("oops e",e.stack);
|
2295
|
+
// print("oops e",e.backtrace && e.backtrace().join("\n"));
|
2296
|
+
// try { throw new Error("here"); } catch(x) { print("oops e",x.stack); }
|
2297
|
+
throw e;
|
2220
2298
|
}
|
2221
2299
|
};
|
2222
2300
|
|
@@ -2333,7 +2411,6 @@ XMLHttpRequest.prototype = {
|
|
2333
2411
|
}
|
2334
2412
|
|
2335
2413
|
try{
|
2336
|
-
// print("pk");
|
2337
2414
|
if (this.async){
|
2338
2415
|
$debug("XHR sending asynch;");
|
2339
2416
|
$env.runAsync(makeRequest);
|
@@ -2342,8 +2419,7 @@ try{
|
|
2342
2419
|
makeRequest();
|
2343
2420
|
}
|
2344
2421
|
}catch(e){
|
2345
|
-
|
2346
|
-
print("oops xhr",e.stack);
|
2422
|
+
$warn("Exception while processing XHR: " + e);
|
2347
2423
|
throw e;
|
2348
2424
|
}
|
2349
2425
|
|
@@ -2561,8 +2637,7 @@ $w.__defineGetter__("document", function(){
|
|
2561
2637
|
init();
|
2562
2638
|
|
2563
2639
|
} catch(e) {
|
2564
|
-
|
2565
|
-
print("oops0",e.stack);
|
2640
|
+
// $warn("Exception during load: "+e);
|
2566
2641
|
throw e;
|
2567
2642
|
}
|
2568
2643
|
|
data/lib/envjs/runtime.rb
CHANGED
@@ -265,7 +265,6 @@ EOJS
|
|
265
265
|
loc = nil
|
266
266
|
add_dep.call w, f
|
267
267
|
evaluate(v, f, 1, w, w, f)
|
268
|
-
# print "load #{uri_s}: #{Time.now-now}\n"
|
269
268
|
else
|
270
269
|
load *files
|
271
270
|
end
|
@@ -416,6 +415,8 @@ if true
|
|
416
415
|
|
417
416
|
static["$master"] = master
|
418
417
|
|
418
|
+
# fake it ...
|
419
|
+
static["isInner"] = true
|
419
420
|
master.load.call Envjs::STATIC, static
|
420
421
|
|
421
422
|
master["static"] = static
|
data/lib/envjs/static.js
CHANGED
@@ -3651,7 +3651,17 @@ __extend__(DOMDocument.prototype, {
|
|
3651
3651
|
xhr.open(method, url, this._parentWindow.document.async);
|
3652
3652
|
// FIXME: not all XHRs have this right now
|
3653
3653
|
xhr.setRequestHeader && xhr.setRequestHeader('Content-Type', xhr_options["Content-Type"] || 'application/x-www-form-urlencoded');
|
3654
|
+
xhr.setRequestHeader && xhr.setRequestHeader('Cookie', _this.cookie);
|
3655
|
+
// print("rf",xhr_options["referer"]);
|
3656
|
+
xhr.setRequestHeader && xhr_options["referer"] && xhr.setRequestHeader('Referer', xhr_options["referer"]);
|
3657
|
+
// print(_this._parentWindow.location.href);
|
3654
3658
|
xhr.onreadystatechange = function(){
|
3659
|
+
// print(url,xhr.status,xhr.responseText);
|
3660
|
+
if(xhr.status === 302) {
|
3661
|
+
// print(302,xhr.responseHeaders["location"]);
|
3662
|
+
_this.load(xhr.responseHeaders["location"],{});
|
3663
|
+
return;
|
3664
|
+
}
|
3655
3665
|
if (xhr.status != 200) {
|
3656
3666
|
$warn("Could not retrieve XHR content from " + url + ": status code " + xhr.status);
|
3657
3667
|
_this.loadXML(
|
@@ -3660,7 +3670,21 @@ __extend__(DOMDocument.prototype, {
|
|
3660
3670
|
"</body></html>");
|
3661
3671
|
} else {
|
3662
3672
|
try{
|
3663
|
-
|
3673
|
+
_this.loadXML(xhr.responseText);
|
3674
|
+
_this.__original_text__ = xhr.responseText;
|
3675
|
+
if(xhr.responseHeaders && xhr.responseHeaders["set-cookie"]) {
|
3676
|
+
try {
|
3677
|
+
_this.cookie = xhr.responseHeaders["set-cookie"];
|
3678
|
+
} catch(e) {
|
3679
|
+
$error("could not set cookie: "+e);
|
3680
|
+
}
|
3681
|
+
}
|
3682
|
+
if(xhr.responseHeaders) {
|
3683
|
+
var h = _this.__headers__ = {};
|
3684
|
+
for(var key in xhr.responseHeaders) {
|
3685
|
+
h[key] = xhr.responseHeaders[key];
|
3686
|
+
}
|
3687
|
+
}
|
3664
3688
|
}catch(e){
|
3665
3689
|
$error("Error Parsing XML - ",e);
|
3666
3690
|
_this.loadXML(
|
@@ -4077,6 +4101,7 @@ try{
|
|
4077
4101
|
this._parentWindow.parseHtmlDocument(xmlString, this, null, null);
|
4078
4102
|
}catch(e){
|
4079
4103
|
print("oopsd",e);
|
4104
|
+
throw e;
|
4080
4105
|
}
|
4081
4106
|
// print("end parse");
|
4082
4107
|
// print("parse time: "+(Date.now() - now)/1000.);
|
@@ -4598,7 +4623,8 @@ var __eval__ = function(script,node){
|
|
4598
4623
|
// $master.first_script_window = original_script_window;
|
4599
4624
|
return result;
|
4600
4625
|
}catch(e){
|
4601
|
-
$
|
4626
|
+
$warn("Exception during on* event eval: "+e);
|
4627
|
+
throw e;
|
4602
4628
|
}
|
4603
4629
|
};
|
4604
4630
|
|
@@ -6336,6 +6362,12 @@ __extend__(HTMLInputElement.prototype, {
|
|
6336
6362
|
|
6337
6363
|
// $w.HTMLInputElement = HTMLInputElement;
|
6338
6364
|
|
6365
|
+
// Local Variables:
|
6366
|
+
// espresso-indent-level:4
|
6367
|
+
// c-basic-offset:4
|
6368
|
+
// tab-width:4
|
6369
|
+
// mode:auto-revert
|
6370
|
+
// End:
|
6339
6371
|
|
6340
6372
|
$debug("Defining HTMLLabelElement");
|
6341
6373
|
/*
|
@@ -22309,7 +22341,6 @@ $debug("Defining document.cookie");
|
|
22309
22341
|
* - requires env
|
22310
22342
|
*/
|
22311
22343
|
|
22312
|
-
/*
|
22313
22344
|
var $cookies = {
|
22314
22345
|
persistent:{
|
22315
22346
|
//domain - key on domain name {
|
@@ -22327,7 +22358,6 @@ var $cookies = {
|
|
22327
22358
|
//like above
|
22328
22359
|
}
|
22329
22360
|
};
|
22330
|
-
*/
|
22331
22361
|
|
22332
22362
|
//HTMLDocument cookie
|
22333
22363
|
__extend__(HTMLDocument.prototype, {
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 7
|
9
|
+
version: 0.1.7
|
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-02
|
19
|
+
date: 2010-03-02 00:00:00 -08:00
|
20
20
|
default_executable: envjsrb
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -30,8 +30,8 @@ dependencies:
|
|
30
30
|
- 2
|
31
31
|
- 0
|
32
32
|
- 0
|
33
|
-
-
|
34
|
-
version: 2.0.0.
|
33
|
+
- pre3
|
34
|
+
version: 2.0.0.pre3
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
description: Browser environment for javascript interpreters
|