Feature #14417 » string_sub_with_symbol_key.patch
string.c | ||
---|---|---|
repl = rb_obj_as_string(rb_yield(match0));
|
||
}
|
||
else {
|
||
repl = rb_hash_aref(hash, rb_str_subseq(str, beg0, end0 - beg0));
|
||
VALUE key = rb_str_subseq(str, beg0, end0 - beg0);
|
||
repl = rb_hash_aref(hash, key);
|
||
if (NIL_P(repl)) {
|
||
repl = rb_hash_aref(hash, rb_to_symbol(key));
|
||
}
|
||
repl = rb_obj_as_string(repl);
|
||
}
|
||
str_mod_check(str, p, len);
|
||
... | ... | |
val = rb_obj_as_string(rb_yield(match0));
|
||
}
|
||
else {
|
||
val = rb_hash_aref(hash, rb_str_subseq(str, beg0, end0 - beg0));
|
||
VALUE key = rb_str_subseq(str, beg0, end0 - beg0);
|
||
val = rb_hash_aref(hash, key);
|
||
if (NIL_P(val)) {
|
||
val = rb_hash_aref(hash, rb_to_symbol(key));
|
||
}
|
||
val = rb_obj_as_string(val);
|
||
}
|
||
str_mod_check(str, sp, slen);
|
test/-ext-/string/test_gsub.rb | ||
---|---|---|
require 'test/unit'
|
||
require "-test-/string"
|
||
class Test_StringGsub < Test::Unit::TestCase
|
||
def test_gsub_with_hash
|
||
hash = {'b'=>'B', 'c'=>'C'}
|
||
assert_equal("abcabc".gsub(/[bc]/, hash), "aBCaBC")
|
||
assert_equal("cbacba".gsub(/[bc]/, hash), "CBaCBa")
|
||
assert_equal("abcabc".gsub(/[ac]/, hash), "bCbC")
|
||
end
|
||
def test_gsub_with_symbol_key_hash
|
||
hash = {b: 'B', c: 'C'}
|
||
assert_equal("abcabc".gsub(/[bc]/, hash), "aBCaBC")
|
||
assert_equal("cbacba".gsub(/[bc]/, hash), "CBaCBa")
|
||
assert_equal("abcabc".gsub(/[ac]/, hash), "bCbC")
|
||
end
|
||
end
|
test/-ext-/string/test_sub.rb | ||
---|---|---|
require 'test/unit'
|
||
require "-test-/string"
|
||
class Test_StringSub < Test::Unit::TestCase
|
||
def test_sub_with_hash
|
||
hash = {'b'=>'B', 'c'=>'C'}
|
||
assert_equal("abcabc".sub(/[bc]/, hash), "aBcabc")
|
||
assert_equal("cbacba".sub(/[bc]/, hash), "Cbacba")
|
||
assert_equal("abcabc".sub(/[ac]/, hash), "bcabc")
|
||
end
|
||
def test_sub_with_symbol_key_hash
|
||
hash = {b: 'B', c: 'C'}
|
||
assert_equal("abcabc".sub(/[bc]/, hash), "aBcabc")
|
||
assert_equal("cbacba".sub(/[bc]/, hash), "Cbacba")
|
||
assert_equal("abcabc".sub(/[ac]/, hash), "bcabc")
|
||
end
|
||
end
|