aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2013-12-12 09:24:44 -0800
committerAlon Zakai <alonzakai@gmail.com>2013-12-12 09:24:44 -0800
commit458f4a63293697adb6fa0639f3793a2c74ba2297 (patch)
tree878c2361ed406e864aa16f299ed6d9987b4db80b /src
parent0958846cf8048bdfc9306c53a038199e066f7525 (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.js92
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!');
+