Skip to content

Commit

Permalink
Merge pull request #651 from kostya/insert
Browse files Browse the repository at this point in the history
Array#insert
  • Loading branch information
alex committed Apr 21, 2013
2 parents 6ffe810 + 64badca commit dbce6f2
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 12 deletions.
12 changes: 0 additions & 12 deletions spec/tags/core/array/insert_tags.txt

This file was deleted.

23 changes: 23 additions & 0 deletions topaz/objects/arrayobject.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -323,3 +323,26 @@ def method_rotate_i(self, space, n=1):
self.items_w.extend(self.items_w[:n]) self.items_w.extend(self.items_w[:n])
del self.items_w[:n] del self.items_w[:n]
return self return self

@classdef.method("insert", i="int")
@check_frozen()
def method_insert(self, space, i, args_w):
if not args_w:
return self
length = len(self.items_w)
if i > length:
for _ in xrange(i - length):
self.items_w.append(space.w_nil)
self.items_w.extend(args_w)
return self
if i < 0:
if i < -length - 1:
raise space.error(space.w_IndexError,
"index %d too small for array; minimum: %d" % (i + 1, -length))
i += length + 1
assert i >= 0
j = i
for e in args_w:
self.items_w.insert(j, e)
j += 1
return self

0 comments on commit dbce6f2

Please sign in to comment.