[jsinterp] Adding JSArrayPrototype#_slice
This commit is contained in:
parent
bbea188950
commit
37d63066dd
@ -59,11 +59,18 @@ class JSArrayPrototype(JSObjectPrototype):
|
||||
def _slice(self, start, end=None):
|
||||
from .utils import to_js
|
||||
|
||||
length = to_uint32(to_js(len(self.value)))
|
||||
start = to_integer(to_js(start))
|
||||
end = length if end is undefined else to_integer(to_js(end))
|
||||
start = to_js(start)
|
||||
end = to_js(end)
|
||||
length = to_js(len(self.value))
|
||||
|
||||
length = to_uint32(length)
|
||||
start = to_integer(start)
|
||||
end = length if end is undefined else to_integer(end)
|
||||
|
||||
start = min(start, length) if start > 0 else max(length + start, 0)
|
||||
|
||||
# TODO add jstest for it
|
||||
|
||||
return self.value[start:end]
|
||||
|
||||
def _sort(self, cmp):
|
||||
|
@ -241,9 +241,16 @@ class JSInterpreter(object):
|
||||
|
||||
elif name is Token.ID:
|
||||
# XXX error handling (unknown id)
|
||||
ref = (self.this[expr[1]] if expr[1] in self.this else
|
||||
self.global_vars[expr[1]])
|
||||
|
||||
id = expr[1]
|
||||
try:
|
||||
ref = (self.this[id] if id in self.this else
|
||||
self.global_vars[id])
|
||||
except KeyError:
|
||||
try:
|
||||
ref = Reference(self.extract_object(id))
|
||||
except AttributeError:
|
||||
ref = Reference(self.extract_function(id))
|
||||
|
||||
# literal
|
||||
elif name in token_keys:
|
||||
ref = Reference(expr[1])
|
||||
|
Loading…
x
Reference in New Issue
Block a user