class JSInterpreter(code.InteractiveConsole): def __init__(self, locals=None, filename="<console>"): code.InteractiveConsole.__init__(self, locals, filename) self.interpreter = Interpreter() self.interpreter.w_Global.Put('quit', W_Builtin(quitjs)) self.interpreter.w_Global.Put('load', W_Builtin(loadjs)) self.interpreter.w_Global.Put('trace', W_Builtin(tracejs)) def runcodefromfile(self, filename): f = open_file_as_stream(filename) self.runsource(f.readall(), filename) f.close() def runcode(self, ast): """Run the javascript code in the AST. All exceptions raised by javascript code must be caught and handled here. When an exception occurs, self.showtraceback() is called to display a traceback. """ try: res = self.interpreter.run(ast) if res not in (None, w_Undefined): try: print res.GetValue().ToString(self.interpreter.w_Global) except ThrowException, exc: print exc.exception.ToString(self.interpreter.w_Global) except SystemExit: raise except ThrowException, exc: self.showtraceback(exc) else:
def __init__(self, locals=None, filename="<console>"): code.InteractiveConsole.__init__(self, locals, filename) self.interpreter = Interpreter() self.interpreter.w_Global.Put('quit', W_Builtin(quitjs)) self.interpreter.w_Global.Put('load', W_Builtin(loadjs)) self.interpreter.w_Global.Put('trace', W_Builtin(tracejs))