mirror of https://github.com/evilhero/mylar
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
from .base import *
|
|
from .constructors.jsmath import Math
|
|
from .constructors.jsdate import Date
|
|
from .constructors.jsobject import Object
|
|
from .constructors.jsfunction import Function
|
|
from .constructors.jsstring import String
|
|
from .constructors.jsnumber import Number
|
|
from .constructors.jsboolean import Boolean
|
|
from .constructors.jsregexp import RegExp
|
|
from .constructors.jsarray import Array
|
|
from .prototypes.jsjson import JSON
|
|
from .host.console import console
|
|
from .host.jseval import Eval
|
|
from .host.jsfunctions import parseFloat, parseInt, isFinite, isNaN
|
|
|
|
# Now we have all the necessary items to create global environment for script
|
|
__all__ = ['Js', 'PyJsComma', 'PyJsStrictEq', 'PyJsStrictNeq',
|
|
'PyJsException', 'PyJsBshift', 'Scope', 'PyExceptionToJs',
|
|
'JsToPyException', 'JS_BUILTINS', 'appengine', 'set_global_object',
|
|
'JsRegExp', 'PyJsException', 'PyExceptionToJs', 'JsToPyException', 'PyJsSwitchException']
|
|
|
|
|
|
# these were defined in base.py
|
|
builtins = ('true','false','null','undefined','Infinity',
|
|
'NaN', 'console', 'String', 'Number', 'Boolean', 'RegExp',
|
|
'Math', 'Date', 'Object', 'Function', 'Array',
|
|
'parseFloat', 'parseInt', 'isFinite', 'isNaN')
|
|
#Array, Function, JSON, Error is done later :)
|
|
# also some built in functions like eval...
|
|
|
|
def set_global_object(obj):
|
|
obj.IS_CHILD_SCOPE = False
|
|
this = This({})
|
|
this.own = obj.own
|
|
this.prototype = obj.prototype
|
|
PyJs.GlobalObject = this
|
|
# make this available
|
|
obj.register('this')
|
|
obj.put('this', this)
|
|
|
|
|
|
|
|
scope = dict(zip(builtins, [globals()[e] for e in builtins]))
|
|
# Now add errors:
|
|
for name, error in ERRORS.items():
|
|
scope[name] = error
|
|
#add eval
|
|
scope['eval'] = Eval
|
|
scope['JSON'] = JSON
|
|
JS_BUILTINS = {k:v for k,v in scope.items()}
|
|
|