summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro Matz Matsumoto <[email protected]>2013-02-18 18:47:58 +0900
committerYukihiro Matz Matsumoto <[email protected]>2013-02-18 18:47:58 +0900
commitb7da7cfee0daac7c3e382e1a767ba1451a4c5c89 (patch)
treed0c0d4f69036e842c4c12bff5d9658fbc681ddf2
parent7ce9cc3b83f941843599a092e119688a40ddf6ef (diff)
downloadmruby-b7da7cfee0daac7c3e382e1a767ba1451a4c5c89.tar.gz
mruby-b7da7cfee0daac7c3e382e1a767ba1451a4c5c89.zip
adopt String#gsub to fixed split behavior
-rw-r--r--mrblib/string.rb6
-rw-r--r--test/t/string.rb2
2 files changed, 3 insertions, 5 deletions
diff --git a/mrblib/string.rb b/mrblib/string.rb
index 8a4894dd4..131d30446 100644
--- a/mrblib/string.rb
+++ b/mrblib/string.rb
@@ -28,12 +28,10 @@ class String
#
# ISO 15.2.10.5.18
def gsub(*args, &block)
- lc = ''
if args.size == 2
- lc = args[1] if self[-1] == args[0]
- split(args[0]).join(args[1]) + lc
+ split(args[0], -1).join(args[1])
elsif args.size == 1 && block
- split(args[0]).join(block.call(args[0]))
+ split(args[0], -1).join(block.call(args[0]))
else
raise ArgumentError, "wrong number of arguments"
end
diff --git a/test/t/string.rb b/test/t/string.rb
index 7d0b147d0..b2a70266b 100644
--- a/test/t/string.rb
+++ b/test/t/string.rb
@@ -205,7 +205,7 @@ assert('String#gsub!', '15.2.10.5.19') do
b = 'abcabc'
b.gsub!('b') { |w| w.capitalize }
- a == 'aBcaBc' && b == 'aBcaBc'
+ a == 'aBcaBc' && b == 'aBcaBc'
end
assert('String#hash', '15.2.10.5.20') do