diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-02-17 16:09:11 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-02-17 16:09:11 -0800 |
| commit | 794406145344ee956ac024f07c37f9e011fbfa28 (patch) | |
| tree | 158590ba6d0c3114f696e85a87c8b892bc2a9e03 | |
| parent | 7ef927e099078c4a8cce90b5200d4ef3f17bf681 (diff) | |
| parent | e8c0b61c0decc9bab480b59dc98075c34259a0d8 (diff) | |
| download | mruby-794406145344ee956ac024f07c37f9e011fbfa28.tar.gz mruby-794406145344ee956ac024f07c37f9e011fbfa28.zip | |
Merge pull request #847 from bovi/gsub
String#gsub fix with last character
| -rw-r--r-- | mrblib/string.rb | 4 | ||||
| -rw-r--r-- | test/t/string.rb | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/mrblib/string.rb b/mrblib/string.rb index 9b11bb2e5..8a4894dd4 100644 --- a/mrblib/string.rb +++ b/mrblib/string.rb @@ -28,8 +28,10 @@ class String # # ISO 15.2.10.5.18 def gsub(*args, &block) + lc = '' if args.size == 2 - split(args[0]).join(args[1]) + lc = args[1] if self[-1] == args[0] + split(args[0]).join(args[1]) + lc elsif args.size == 1 && block split(args[0]).join(block.call(args[0])) else diff --git a/test/t/string.rb b/test/t/string.rb index fac77075b..7d0b147d0 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -193,7 +193,9 @@ assert('String#eql?', '15.2.10.5.17') do end assert('String#gsub', '15.2.10.5.18') do - 'abcabc'.gsub('b', 'B') == 'aBcaBc' && 'abcabc'.gsub('b') { |w| w.capitalize } == 'aBcaBc' + 'abcabc'.gsub('b', 'B') == 'aBcaBc' and + 'abcabc'.gsub('b') { |w| w.capitalize } == 'aBcaBc' and + '#a#a#'.gsub('#', '$') == '$a$a$' end assert('String#gsub!', '15.2.10.5.19') do @@ -318,7 +320,9 @@ assert('String#split', '15.2.10.5.35') do end assert('String#sub', '15.2.10.5.36') do - 'abcabc'.sub('b', 'B') == 'aBcabc' && 'abcabc'.sub('b') { |w| w.capitalize } == 'aBcabc' + 'abcabc'.sub('b', 'B') == 'aBcabc' and + 'abcabc'.sub('b') { |w| w.capitalize } == 'aBcabc' and + 'aa#'.sub('#', '$') == 'aa$' end assert('String#sub!', '15.2.10.5.37') do |
