Ruby gsub com hash ou bloco

Fato divertido do Ruby: você pode fazer gsub com um bloco ou hash.

Depois de definir um hash,

amino_acid_hash = { 'A' => 'Ala', 'R' => 'Arg', 'N' => 'Asn' } # etc.

você pode passar o nome do hash como o segundo argumento para gsub e ele o substituirá nos valores de hash.

"R232A".gsub(/[A-Z]/, amino_acid_hash)
=> "Arg232Ala"

Você também pode passar por um bloqueio:

"12345".gsub(/d/) { |n| n.to_i*2 }
=> "246810"