Skip to content

Commit 7df63b3

Browse files
committed
Allow env-js to be require'd.
This fixes a bug with the usage of `require` in env-js, such that env-js now uses proper relative paths rather than unshifting "." onto `require.paths`. The behavior of `require` is documented here: <http://nodejs.org/docs/v0.4.2/api/modules.html#all_Together...> With this change in place, it's now possible to use env-js simply by require'ing it from a script, rather than having env-js host and eval. Also, this commit changes the initialization of env-js, such that the initial document is immediately available when the env-js module is loaded. And, the event loop is disabled so that env-js shuts down cleanly. This probably breaks some parts of env-js, but it makes it much easier to use so I'm going to play with it a bit.
1 parent 3568eca commit 7df63b3

21 files changed

Lines changed: 189 additions & 148 deletions

lib/env-js/bin/envjs

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
#!/bin/sh
2+
# Usage: envjs <platorm> file.js [file2.js ...]
3+
###########################################################################
4+
ENVJS_PLATFORM='node'
5+
6+
# first arguments ($1)
7+
# may be a platform or is a file and the default platorm is used
8+
if [ -n "$1" ]; then
9+
if [ -n "$1" ]; then ENVJS_PLATFORM="$1"; shift; fi
10+
fi
11+
12+
# Run envjs with the given platform
13+
###########################################################################
14+
case "$ENVJS_PLATFORM" in
15+
16+
"node")
17+
node envjs/node.js $@
18+
;;
19+
"rhino")
20+
java -Xmx512M -jar rhino/js.jar -opt -1 envjs/rhino.js $@
21+
;;
22+
"rhino-debug")
23+
java -cp rhino/js.jar org.mozilla.javascript.tools.debugger.Main envjs/rhino.js $@
24+
;;
25+
"spyd")
26+
python envjs/spydermonkey.py envjs/spydermonkey.js $@
27+
;;
28+
"rubyracer")
29+
ruby -rrubygems envjs/rubyracer.rb envjs/rubyracer.js $@
30+
;;
31+
"johnson")
32+
ruby -rrubygems envjs/johnson.rb envjs/johnson.js $@
33+
;;
34+
*)
35+
# platform default means $1 was actually a file
36+
node envjs/node.js $ENVJS_PLATFORM $@
37+
;;
38+
esac
39+

lib/env-js/envjs/console.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
* @Console
55
*/
66

7-
var Envjs = Envjs || require('envjs/platform/core').Envjs;
7+
var Envjs = Envjs || require('./platform/core').Envjs;
88

99
/*
10-
* Envjs console.1.3.pre03
10+
* Envjs console.1.3.pre03
1111
* Pure JavaScript Browser Environment
1212
* By John Resig <http://ejohn.org/> and the Envjs Team
1313
* Copyright 2008-2010 John Resig, under the MIT License
@@ -28,7 +28,7 @@ var Envjs = Envjs || require('envjs/platform/core').Envjs;
2828
try{
2929
console.log();
3030
}catch(e){
31-
31+
3232

3333
function escapeHTML(value)
3434
{

lib/env-js/envjs/css.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ var CSS2Properties,
1818
1919
*/
2020

21-
var Envjs = Envjs || require('envjs/platform/core').Envjs,
22-
Document = require('envjs/dom').Document,
23-
HTMLElement = require('envjs/html').HTMLElement;
21+
var Envjs = Envjs || require('./platform/core').Envjs,
22+
Document = require('./dom').Document,
23+
HTMLElement = require('./html').HTMLElement;
2424
/*
2525
* Envjs css.1.3.pre03
2626
* Pure JavaScript Browser Environment

lib/env-js/envjs/dom.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ var Attr,
4141
4242
*/
4343

44-
var Envjs = Envjs || require('envjs/platform/core').Envjs,
45-
After = After || require('envjs/platform/core').After;
44+
var Envjs = Envjs || require('./platform/core').Envjs,
45+
After = After || require('./platform/core').After;
4646

4747
/*
4848
* Envjs dom.1.3.pre03

lib/env-js/envjs/event.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ var Event,
2020
2121
*/
2222

23-
var Envjs = Envjs || require('envjs/platform/core').Envjs,
24-
After = After || require('envjs/platform/core').After,
25-
Document = Document || require('envjs/dom').Document;
23+
var Envjs = Envjs || require('./platform/core').Envjs,
24+
After = After || require('./platform/core').After,
25+
Document = Document || require('./dom').Document;
2626
/*
2727
* Envjs event.1.3.pre03
2828
* Pure JavaScript Browser Environment

lib/env-js/envjs/html.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,13 @@
6868
__loadLink__;
6969
*/
7070

71-
var Envjs = Envjs || require('envjs/platform/core').Envjs,
72-
After = After || require('envjs/platform/core').After,
73-
Document = Document || require('envjs/dom').Document,
74-
Element = Element || require('envjs/dom').Element,
75-
NodeList = NodeList || require('envjs/dom').NodeList,
76-
Node = Node || require('envjs/dom').Node,
77-
Event = Event || require('envjs/event').Event;
71+
var Envjs = Envjs || require('./platform/core').Envjs,
72+
After = After || require('./platform/core').After,
73+
Document = Document || require('./dom').Document,
74+
Element = Element || require('./dom').Element,
75+
NodeList = NodeList || require('./dom').NodeList,
76+
Node = Node || require('./dom').Node,
77+
Event = Event || require('./event').Event;
7878

7979
/*
8080
* Envjs html.1.3.pre03

lib/env-js/envjs/johnson.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,5 @@ var require = (function() {
6262
return require;
6363
})();
6464

65-
require('envjs/platform/johnson');
66-
require('envjs/window');
65+
require('./platform/johnson');
66+
require('./window');

lib/env-js/envjs/node.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1-
require.paths.unshift('.');
2-
require('envjs/platform/node');
3-
require('envjs/window');
1+
require('./platform/node');
2+
Envjs.eventLoop = function() {}; // disabled for clean shutdown
3+
4+
require('./window');
5+
new Window(__this__); // initialize a blank window

lib/env-js/envjs/parser.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
*
1010
*/
1111

12-
var Envjs = Envjs || require('envjs/platform/core').Envjs,
13-
After = After || require('envjs/platform/core').After,
14-
DOMImplementation = DOMImplementation || require('envjs/dom').DOMImplementation,
15-
Document = Document || require('envjs/dom').Document,
16-
Element = Element || require('envjs/dom').Element,
17-
NodeList = NodeList || require('envjs/dom').NodeList,
18-
Node = Node || require('envjs/dom').Node,
19-
HTMLDocument = HTMLDocument || require('envjs/html').HTMLDocument,
20-
HTMLElement = HTMLElement || require('envjs/html').HTMLElement,
21-
setTimeout = setTimeout || require('envjs/timer').setTimeout,
22-
clearTimeout = clearTimeout || require('envjs/timer').clearTimeout,
23-
setInterval = setInterval || require('envjs/timer').setInterval,
24-
clearInterval = clearInterval || require('envjs/timer').clearInterval;
12+
var Envjs = Envjs || require('./platform/core').Envjs,
13+
After = After || require('./platform/core').After,
14+
DOMImplementation = DOMImplementation || require('./dom').DOMImplementation,
15+
Document = Document || require('./dom').Document,
16+
Element = Element || require('./dom').Element,
17+
NodeList = NodeList || require('./dom').NodeList,
18+
Node = Node || require('./dom').Node,
19+
HTMLDocument = HTMLDocument || require('./html').HTMLDocument,
20+
HTMLElement = HTMLElement || require('./html').HTMLElement,
21+
setTimeout = setTimeout || require('./timer').setTimeout,
22+
clearTimeout = clearTimeout || require('./timer').clearTimeout,
23+
setInterval = setInterval || require('./timer').setInterval,
24+
clearInterval = clearInterval || require('./timer').clearInterval;
2525
/*
2626
* Envjs parser.1.3.pre03
2727
* Pure JavaScript Browser Environment

lib/env-js/envjs/platform/core.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var log = {
4343
};
4444

4545
if (typeof console == "undefined") {
46-
console = require('envjs/console').console;
46+
console = require('./console').console;
4747
}
4848

4949
//eg "Mozilla"
@@ -980,7 +980,7 @@ Envjs.emit = function(event /*, arg1, arg2, etc*/ ){
980980
eventQueue.push({event:event, args:arguments});
981981
};
982982

983-
setTimeout = require('envjs/timer').setTimeout;
983+
setTimeout = require('./../timer').setTimeout;
984984

985985
var $warming = 10;
986986

@@ -1375,7 +1375,7 @@ Envjs.exchangeHTMLDocument = function(doc, text, url) {
13751375
frame = doc.__ownerFrame__,
13761376
i;
13771377
try {
1378-
HTMLParser = HTMLParser || require('envjs/parser').HTMLParser;
1378+
HTMLParser = HTMLParser || require('./../parser').HTMLParser;
13791379
//do some cleanup so we can reuse the document
13801380
doc.baseURI = url;
13811381
log.debug('reseting document indexes');

0 commit comments

Comments
 (0)