diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2016-07-15 01:22:02 +0900 |
|---|---|---|
| committer | GitHub <[email protected]> | 2016-07-15 01:22:02 +0900 |
| commit | 97283faa16d2e69a27de891e5a6695bf370cb4c3 (patch) | |
| tree | 33f068d71d5b125872e9000aab6028c7dc6741c9 /mrbgems/mruby-string-ext/mrblib/string.rb | |
| parent | 72b28f1ed63916b89c0f1822c44ead6525213004 (diff) | |
| parent | d83d9cd164d934c57ab19b6022d29f150c12b3a2 (diff) | |
| download | mruby-97283faa16d2e69a27de891e5a6695bf370cb4c3.tar.gz mruby-97283faa16d2e69a27de891e5a6695bf370cb4c3.zip | |
Merge pull request #3176 from ksss/string-insert
String#insert should be destructive
Diffstat (limited to 'mrbgems/mruby-string-ext/mrblib/string.rb')
| -rw-r--r-- | mrbgems/mruby-string-ext/mrblib/string.rb | 15 |
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 ## |
