diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-12-12 09:24:44 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-12-12 09:24:44 -0800 |
commit | 458f4a63293697adb6fa0639f3793a2c74ba2297 (patch) | |
tree | 878c2361ed406e864aa16f299ed6d9987b4db80b /src | |
parent | 0958846cf8048bdfc9306c53a038199e066f7525 (diff) |
move tests/hello_world.js to src, so tests/ folder is not needed for sanity checks
Diffstat (limited to 'src')
-rw-r--r-- | src/hello_world.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/hello_world.js b/src/hello_world.js new file mode 100644 index 00000000..01082eb4 --- /dev/null +++ b/src/hello_world.js @@ -0,0 +1,92 @@ +// *** Environment setup code *** +var arguments_ = []; + +var ENVIRONMENT_IS_NODE = typeof process === 'object'; +var ENVIRONMENT_IS_WEB = typeof window === 'object'; +var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function'; +var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + +if (ENVIRONMENT_IS_NODE) { + // Expose functionality in the same simple way that the shells work + // Note that we pollute the global namespace here, otherwise we break in node + print = function(x) { + process['stdout'].write(x + '\n'); + }; + printErr = function(x) { + process['stderr'].write(x + '\n'); + }; + + var nodeFS = require('fs'); + + read = function(filename) { + var ret = nodeFS['readFileSync'](filename).toString(); + if (!ret && filename[0] != '/') { + filename = __dirname.split('/').slice(0, -1).join('/') + '/src/' + filename; + ret = nodeFS['readFileSync'](filename).toString(); + } + return ret; + }; + + load = function(f) { + globalEval(read(f)); + }; + + arguments_ = process['argv'].slice(2); + +} else if (ENVIRONMENT_IS_SHELL) { + // Polyfill over SpiderMonkey/V8 differences + if (!this['read']) { + this['read'] = function(f) { snarf(f) }; + } + + if (typeof scriptArgs != 'undefined') { + arguments_ = scriptArgs; + } else if (typeof arguments != 'undefined') { + arguments_ = arguments; + } + +} else if (ENVIRONMENT_IS_WEB) { + this['print'] = printErr = function(x) { + console.log(x); + }; + + this['read'] = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, false); + xhr.send(null); + return xhr.responseText; + }; + + if (this['arguments']) { + arguments_ = arguments; + } +} else if (ENVIRONMENT_IS_WORKER) { + // We can do very little here... + + this['load'] = importScripts; + +} else { + throw 'Unknown runtime environment. Where are we?'; +} + +function globalEval(x) { + eval.call(null, x); +} + +if (typeof load == 'undefined' && typeof read != 'undefined') { + this['load'] = function(f) { + globalEval(read(f)); + }; +} + +if (typeof printErr === 'undefined') { + this['printErr'] = function(){}; +} + +if (typeof print === 'undefined') { + this['print'] = printErr; +} +// *** Environment setup code *** + +print('hello, world!'); + |