[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):
|
def _slice(self, start, end=None):
|
||||||
from .utils import to_js
|
from .utils import to_js
|
||||||
|
|
||||||
length = to_uint32(to_js(len(self.value)))
|
start = to_js(start)
|
||||||
start = to_integer(to_js(start))
|
end = to_js(end)
|
||||||
end = length if end is undefined else to_integer(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)
|
start = min(start, length) if start > 0 else max(length + start, 0)
|
||||||
|
|
||||||
|
# TODO add jstest for it
|
||||||
|
|
||||||
return self.value[start:end]
|
return self.value[start:end]
|
||||||
|
|
||||||
def _sort(self, cmp):
|
def _sort(self, cmp):
|
||||||
|
@ -241,9 +241,16 @@ class JSInterpreter(object):
|
|||||||
|
|
||||||
elif name is Token.ID:
|
elif name is Token.ID:
|
||||||
# XXX error handling (unknown id)
|
# XXX error handling (unknown id)
|
||||||
ref = (self.this[expr[1]] if expr[1] in self.this else
|
id = expr[1]
|
||||||
self.global_vars[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
|
# literal
|
||||||
elif name in token_keys:
|
elif name in token_keys:
|
||||||
ref = Reference(expr[1])
|
ref = Reference(expr[1])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user