131 lines
2.9 KiB
Python
131 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: ascii -*-
|
|
from __future__ import unicode_literals, division, with_statement
|
|
|
|
|
|
Node = r"""(function(program, execJS) { execJS(program) })(function() { #{source}
|
|
}, function(program) {
|
|
var output;
|
|
var print = function(string) {
|
|
process.stdout.write('' + string + '\n');
|
|
};
|
|
try {
|
|
result = program();
|
|
print('')
|
|
if (typeof result == 'undefined' && result !== null) {
|
|
print('["ok"]');
|
|
} else {
|
|
try {
|
|
print(JSON.stringify(['ok', result]));
|
|
} catch (err) {
|
|
print('["err"]');
|
|
}
|
|
}
|
|
} catch (err) {
|
|
print(JSON.stringify(['err', '' + err]));
|
|
}
|
|
});"""
|
|
|
|
|
|
JavaScriptCore = r"""(function(program, execJS) { execJS(program) })(function() {
|
|
return eval(#{encoded_source});
|
|
}, function(program) {
|
|
var output;
|
|
try {
|
|
result = program();
|
|
print("");
|
|
if (typeof result == 'undefined' && result !== null) {
|
|
print('["ok"]');
|
|
} else {
|
|
try {
|
|
print(JSON.stringify(['ok', result]));
|
|
} catch (err) {
|
|
print('["err"]');
|
|
}
|
|
}
|
|
} catch (err) {
|
|
print(JSON.stringify(['err', '' + err]));
|
|
}
|
|
});
|
|
"""
|
|
|
|
SpiderMonkey = r"""(function(program, execJS) { execJS(program) })(function() { #{source}
|
|
}, function(program) {
|
|
#{json2_source}
|
|
var output;
|
|
try {
|
|
result = program();
|
|
print("");
|
|
if (typeof result == 'undefined' && result !== null) {
|
|
print('["ok"]');
|
|
} else {
|
|
try {
|
|
print(JSON.stringify(['ok', result]));
|
|
} catch (err) {
|
|
print('["err"]');
|
|
}
|
|
}
|
|
} catch (err) {
|
|
print(JSON.stringify(['err', '' + err]));
|
|
}
|
|
});
|
|
"""
|
|
Nashorn = SpiderMonkey
|
|
|
|
JScript = r"""(function(program, execJS) { execJS(program) })(function() {
|
|
return eval(#{encoded_source});
|
|
}, function(program) {
|
|
#{json2_source}
|
|
var output, print = function(string) {
|
|
string = string.replace(/[^\x00-\x7f]/g, function(ch){
|
|
return '\\u' + ('0000' + ch.charCodeAt(0).toString(16)).slice(-4);
|
|
});
|
|
WScript.Echo(string);
|
|
};
|
|
try {
|
|
result = program();
|
|
print("")
|
|
if (typeof result == 'undefined' && result !== null) {
|
|
print('["ok"]');
|
|
} else {
|
|
try {
|
|
print(JSON.stringify(['ok', result]));
|
|
} catch (err) {
|
|
print('["err"]');
|
|
}
|
|
}
|
|
} catch (err) {
|
|
print(JSON.stringify(['err', err.name + ': ' + err.message]));
|
|
}
|
|
});
|
|
"""
|
|
|
|
PhantomJS = r"""
|
|
(function(program, execJS) { execJS(program) })(function() {
|
|
return eval(#{encoded_source});
|
|
}, function(program) {
|
|
var output;
|
|
var print = function(string) {
|
|
console.log('' + string);
|
|
};
|
|
try {
|
|
result = program();
|
|
print('')
|
|
if (typeof result == 'undefined' && result !== null) {
|
|
print('["ok"]');
|
|
} else {
|
|
try {
|
|
print(JSON.stringify(['ok', result]));
|
|
} catch (err) {
|
|
print('["err"]');
|
|
}
|
|
}
|
|
} catch (err) {
|
|
print(JSON.stringify(['err', '' + err]));
|
|
}
|
|
});
|
|
phantom.exit();
|
|
"""
|
|
|
|
SlimerJS = PhantomJS
|