Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

format記法にhashを渡してキーから文字列を生成する

format記法にhashを渡してキーから文字列を生成する方法があります。

format("%<foo>04b %<bar>05d", {foo:1, bar:2})
#=> "0001 00002"

format("%<foo>#04b %<bar>05d", {foo:1, bar:2})
#=> "0b01 00002"

ネストしたhashを扱うのは相当に難しいです。
あえてやるとすれば

hash = {hoge:{foo: 1, bar:2}}
format("%<foo>#04b %<bar>05d", hash[:hoge])
#=> "0b01 00002"

と言った感じになるのでしょうが、そこまでしてやる位なら#{}記法で変数埋め込んだ方が親切です。

・・・まぁ、これは例の%記法と同じ系統の魔界記法なので、脳からお汁を出したい場合以外は避けるべき記法と思われます。