String#% and a Hash

Ruby1.9 doesn’t seem to accept hashes in the String#% method anymore.
I use this a lot in conjunction with gettext[1], and am basically
wondering if this is a language change or a 1.9 bug. It doesn’t appear
to be documented in Ruby1.8 or Ruby1.9. Thanks.

Daniel Brumbaugh K.

[1]
http://www.yotabanana.com/hiki/ruby-gettext.html

On Dec 31, 1:34 am, Daniel Brumbaugh K. [email protected]
wrote:

Ruby1.9 doesn’t seem to accept hashes in the String#% method anymore.
I use this a lot in conjunction with gettext[1], and am basically
wondering if this is a language change or a 1.9 bug. It doesn’t appear
to be documented in Ruby1.8 or Ruby1.9. Thanks.

Daniel Brumbaugh K.

[1]
http://www.yotabanana.com/hiki/ruby-gettext.html

Example? In 1.8.6, this excepts:

“blah %s %s” % {:a=>“blah”, :b=>“blah”}

=> ArgumentError: too few arguments …

Regards,
Jordan

On Dec 30, 2007, at 23:34 , Daniel Brumbaugh K. wrote:

Ruby1.9 doesn’t seem to accept hashes in the String#% method anymore.
I use this a lot in conjunction with gettext[1], and am basically
wondering if this is a language change or a 1.9 bug. It doesn’t appear
to be documented in Ruby1.8 or Ruby1.9. Thanks.

Did it ever? I think you’re referring to this, right?

Also you can write as:
_("%{filename} was not found") % {:filename => “foo.rb”}
_("%{filename1} and %{filename2} is not same file") % {:filename1 =>
“foo.rb”,
:filename2 =>
“bar.rb”}
_("%{filename} is %{filesize} byte") % {:filename => “foo.rb”,
:filesize => 100}

that looks like a gettext extension of String#%, not part of 1.8 core:

s = ‘%{a}’; s.%(“a” => 42)
ArgumentError: malformed format string - %{
from (irb):8:in `%’
from (irb):8

I know it works this way in python, and it is actually pretty nice.