[jsbuilt-ins] jsbuilt_ins mock up
This commit is contained in:
parent
3f075d87da
commit
41596ff77d
60
youtube_dl/jsinterp/jsbuilt_ins.py
Normal file
60
youtube_dl/jsinterp/jsbuilt_ins.py
Normal file
@ -0,0 +1,60 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
|
||||
class JSBase(object):
|
||||
def __init__(self, cls=None):
|
||||
if cls is None:
|
||||
cls = self.__class__
|
||||
|
||||
if cls is JSBase:
|
||||
self.prototype = {}
|
||||
else:
|
||||
super(cls, self).__init__(cls.__bases__[0])
|
||||
self.prototype.update(cls.prototype)
|
||||
|
||||
def get_proto_prop(self, prop):
|
||||
return self.prototype[prop](self)
|
||||
|
||||
|
||||
class JSObject(JSBase):
|
||||
def __init__(self, value=None):
|
||||
super(JSObject, self).__init__()
|
||||
self.value = value
|
||||
self.props = {}
|
||||
|
||||
@staticmethod
|
||||
def get_prototype_of(o):
|
||||
return 'prototype'
|
||||
|
||||
def has_own_prop(self):
|
||||
return 'object has own prop'
|
||||
|
||||
def to_string(self):
|
||||
return 'object to string'
|
||||
|
||||
prototype = {'hasOwnProperty': has_own_prop, 'toLocaleString': to_string}
|
||||
props = {'prototype ': prototype, 'getPrototypeOf': get_prototype_of}
|
||||
|
||||
|
||||
class JSArray(JSObject):
|
||||
|
||||
def __init__(self, length=0):
|
||||
super(JSArray, self).__init__()
|
||||
self.value = []
|
||||
self.props = {'length': length}
|
||||
|
||||
@staticmethod
|
||||
def is_array(arg):
|
||||
return 'is array'
|
||||
|
||||
def concat(self):
|
||||
return 'concat'
|
||||
|
||||
def join(self):
|
||||
return 'join'
|
||||
|
||||
def to_string(self):
|
||||
return 'array to string'
|
||||
|
||||
prototype = {'concat': concat, 'join': join, 'toLocaleString': to_string}
|
||||
props = {'prototype ': prototype, 'isArray': is_array, 'length': 1}
|
Loading…
x
Reference in New Issue
Block a user