[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

String#% and a Hash

Daniel Brumbaugh Keeney

12/31/2007 7:35:00 AM

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 Keeney

[1]
<http://www.yotabanana.com/hiki/ruby-gettex...

2 Answers

MonkeeSage

12/31/2007 7:45:00 AM

0

On Dec 31, 1:34 am, Daniel Brumbaugh Keeney <devi.webmas...@gmail.com>
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 Keeney
>
> [1]
> <http://www.yotabanana.com/hiki/ruby-gettex...

Example? In 1.8.6, this excepts:

"blah %s %s" % {:a=>"blah", :b=>"blah"}

# => ArgumentError: too few arguments ...

Regards,
Jordan

Ryan Davis

12/31/2007 8:11:00 AM

0


On Dec 30, 2007, at 23:34 , Daniel Brumbaugh Keeney 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.