Rubyのヒアドキュメントでインデントを無視する
Rubyのヒアドキュメントは高機能(ruedapさん)という エントリで、Rubyのヒアドキュメントにおいて、終了ラベルのインデントを無視するオプションが紹介されていました(<<EOSではなく、<<-EOSのように、開始ラベルの先頭にマイナスを付ける)。知らなかった、、、。天体のデータ解析スクリプトをRubyでメタ的に生成する際にヒアドキュメントを多用する場面があるのですが、これが使えるとややソースコードが見やすくなりますね。
1
2
3
4
5
6
7
for i in 0...3 do
puts <<-EOS
ABC
DEF
GHI
EOS
end
[browser-shot url=”http://blog.ruedap.com/2011/01/19/ruby-here-document” width=”450”]
ヒアドキュメント内のテキストのインデントを無視したい(Rubyのコードと同じインデントで記述して、でも出力結果にはインデント用のタブやスペースは表示したくない)という場合は、チルダがRubyのヒアドキュメントをもっと良くする(kyoendoさん)を参照しましょう。Stringクラスにメソッドを一つ追加して、~<<-EOSとするだけでインデントを削除する方法を紹介してくれています。