summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-string-ext/mrblib/string.rb
diff options
context:
space:
mode:
authorksss <[email protected]>2016-07-14 21:30:31 +0900
committerksss <[email protected]>2016-07-14 21:33:15 +0900
commitd83d9cd164d934c57ab19b6022d29f150c12b3a2 (patch)
tree33f068d71d5b125872e9000aab6028c7dc6741c9 /mrbgems/mruby-string-ext/mrblib/string.rb
parent72b28f1ed63916b89c0f1822c44ead6525213004 (diff)
downloadmruby-d83d9cd164d934c57ab19b6022d29f150c12b3a2.tar.gz
mruby-d83d9cd164d934c57ab19b6022d29f150c12b3a2.zip
String#insert should be destructive
Diffstat (limited to 'mrbgems/mruby-string-ext/mrblib/string.rb')
-rw-r--r--mrbgems/mruby-string-ext/mrblib/string.rb15
1 files changed, 7 insertions, 8 deletions
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb
index 3dd5561c8..fc734b951 100644
--- a/mrbgems/mruby-string-ext/mrblib/string.rb
+++ b/mrbgems/mruby-string-ext/mrblib/string.rb
@@ -254,14 +254,13 @@ class String
# "abcd".insert(-1, 'X') #=> "abcdX"
#
def insert(idx, str)
- pos = idx.to_i
- pos += self.size + 1 if pos < 0
-
- raise IndexError, "index #{idx.to_i} out of string" if pos < 0 || pos > self.size
-
- return self + str if pos == -1
- return str + self if pos == 0
- return self[0..pos - 1] + str + self[pos..-1]
+ if idx == -1
+ return self << str
+ elsif idx < 0
+ idx += 1
+ end
+ self[idx, 0] = str
+ self
end
##