__END__っていうものがあることを先日知った。
知ったばっかりなので使いたくなるのが人情。
ということで使った!!
やっぱりRubyの用途は定型的なコードの自動生成が主なので、それ系になります。
今日使ったのは、あるフォルダの中にあるファイル名をもとにXMLを作るというものでした。
もっと具体的に言うと、あるフォルダ(javaのパッケージ)内にあるファイルをNetBeansのモジュールのlayer.xmlに登録するために<file name="...." url="nbresloc:/...." />を作るというものです。
使い捨てツールなので、さくっとね。
require 'erb'
# 一覧を取得したいフォルダのパス
PATH = "d:\\tmp"
list = Dir.chdir(PATH) do
Dir["*.*"]
end
template = ERB.new DATA.readlines.join, nil, "-"
template.run binding
# __END__の後にERBのテンプレートを書く
__END__
<%- list.each do |name| -%>
<file name="<%=name%>" url="nbresloc:/org/yourorghere/<%=name%> />"
<%- end -%>
__END__って書くと、そこでプログラムのファイルの終端を表すのと、DATAという特殊な変数を使って、__END__以降のデータを読んだりできる。
ということで、__END__以降にERBのテンプレートみたいなのを押し出すことが出来る。
ヒアドキュメントよりも楽チンかも。