refactor: execute js/py code (#118)
This commit is contained in:
@@ -1,5 +1,3 @@
|
||||
const vm = require('vm');
|
||||
|
||||
/**
|
||||
* Execute the javascript code in node.js.
|
||||
* @typedef {Object} Args
|
||||
@@ -7,7 +5,15 @@ const vm = require('vm');
|
||||
* @param {Args} args
|
||||
*/
|
||||
exports.run = function run({ code }) {
|
||||
const context = vm.createContext({});
|
||||
const script = new vm.Script(code);
|
||||
return script.runInContext(context);
|
||||
let log = "";
|
||||
const oldStdoutWrite = process.stdout.write.bind(process.stdout);
|
||||
process.stdout.write = (chunk, _encoding, callback) => {
|
||||
log += chunk;
|
||||
if (callback) callback();
|
||||
};
|
||||
|
||||
eval(code);
|
||||
|
||||
process.stdout.write = oldStdoutWrite;
|
||||
return log;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,16 @@
|
||||
import io
|
||||
import sys
|
||||
|
||||
def run(code: str):
|
||||
"""Execute the python code.
|
||||
Args:
|
||||
code: Python code to execute, such as `print("hello world")`
|
||||
"""
|
||||
return eval(code)
|
||||
old_stdout = sys.stdout
|
||||
new_stdout = io.StringIO()
|
||||
sys.stdout = new_stdout
|
||||
|
||||
exec(code)
|
||||
|
||||
sys.stdout = old_stdout
|
||||
return new_stdout.getvalue()
|
||||
Reference in New Issue
Block a user