diff options
| author | Tomoyuki Sahara <[email protected]> | 2015-06-08 17:32:14 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2015-06-08 17:32:14 +0900 |
| commit | 5dd2b8e16f33b84773cdebeec4b6a86a511e8e9c (patch) | |
| tree | a0377e98eeb10f3bdd5f98759addc7cbb819d307 /test/t/string.rb | |
| parent | a04116267850afc5b85459940656346c7c380da5 (diff) | |
| download | mruby-5dd2b8e16f33b84773cdebeec4b6a86a511e8e9c.tar.gz mruby-5dd2b8e16f33b84773cdebeec4b6a86a511e8e9c.zip | |
gsub/sub supports back references in substitutes. fixes #2816.
This implementation is compatible with CRuby's String#gsub/sub
except \1 ... \9 and \+. They are useless without Regexp library.
Diffstat (limited to 'test/t/string.rb')
| -rw-r--r-- | test/t/string.rb | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/test/t/string.rb b/test/t/string.rb index 63e4af000..ee6fe0848 100644 --- a/test/t/string.rb +++ b/test/t/string.rb @@ -254,6 +254,15 @@ assert('String#gsub', '15.2.10.5.18') do assert_equal('A', 'a'.gsub('a'){|w| w.capitalize }) end +assert('String#gsub with backslash') do + s = 'abXcdXef' + assert_equal 'ab<\\>cd<\\>ef', s.gsub('X', '<\\\\>') + assert_equal 'ab<X>cd<X>ef', s.gsub('X', '<\\&>') + assert_equal 'ab<X>cd<X>ef', s.gsub('X', '<\\0>') + assert_equal 'ab<ab>cd<abXcd>ef', s.gsub('X', '<\\`>') + assert_equal 'ab<cdXef>cd<ef>ef', s.gsub('X', '<\\\'>') +end + assert('String#gsub!', '15.2.10.5.19') do a = 'abcabc' a.gsub!('b', 'B') @@ -416,6 +425,15 @@ assert('String#sub', '15.2.10.5.36') do assert_equal 'aa$', 'aa#'.sub('#', '$') end +assert('String#sub with backslash') do + s = 'abXcdXef' + assert_equal 'ab<\\>cdXef', s.sub('X', '<\\\\>') + assert_equal 'ab<X>cdXef', s.sub('X', '<\\&>') + assert_equal 'ab<X>cdXef', s.sub('X', '<\\0>') + assert_equal 'ab<ab>cdXef', s.sub('X', '<\\`>') + assert_equal 'ab<cdXef>cdXef', s.sub('X', '<\\\'>') +end + assert('String#sub!', '15.2.10.5.37') do a = 'abcabc' a.sub!('b', 'B') |
