Bug #11677 » 0001-Not-raise-KeyError-when-an-arg-hash-of-sprintf-has-k.patch
| sprintf.c | ||
|---|---|---|
|
len - 2 /* without parenthesis */,
|
||
|
enc);
|
||
|
nextvalue = rb_hash_aref(hash, sym);
|
||
|
if (NIL_P(nextvalue) && !FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
||
|
if (NIL_P(nextvalue) && (rb_hash_has_key(hash, sym) == Qfalse) && !FL_TEST(hash, HASH_PROC_DEFAULT)) {
|
||
|
rb_enc_raise(enc, rb_eKeyError, "key%.*s not found", len, start);
|
||
|
}
|
||
|
if (term == '}') goto format_s;
|
||
| test/ruby/test_sprintf.rb | ||
|---|---|---|
|
assert_equal("hello world", "hello %{location}" % h)
|
||
|
assert_equal("hello world", "hello %<location>s" % h)
|
||
|
end
|
||
|
def test_named_with_nil
|
||
|
h = { key: nil, key2: "key2_val" }
|
||
|
assert_equal("key is , key2 is key2_val", "key is %{key}, key2 is %{key2}" % h)
|
||
|
end
|
||
|
end
|
||