Rubyでいろんなソースコードをお手軽自動生成してみる

どうも・・・また更新が止まっていました。
黒猫のSQL stdio関係でこられる方と、Rubyでの日本語メール送信で来られるかたが多いようです。
作者の方にもコメント書いて頂いたりと、結構やっぱりネットは狭いですね。


Rubyはそのお手軽感で、普段使いの言語として抜群の使い勝手なんですが、そのなかでもこのソース自動生成はもう私の中では定番中の定番テクになってます。

ソース自動生成するってことは・・・実はまともに設計せずにコピペが多いことの裏返しなんですが・・・いいじゃないですか!

ってことで、毎度毎度のお手軽サンプルコードです

require 'erb'

hoge = ["ほげほげ", "もげもげ", "ぴよぴよ"]

hogegen = ERB.new <<-EOF
<ul>
<% hoge.each{|a_hoge| %>
<li><%=a_hoge %></li>
<% } %>
</ul>

EOF

puts hogegen.result

こう書くと

<ul>
<li>ほげほげ</li>
<li>もげもげ</li>
<li>ぴよぴよ</li>
</ul>

こう出力される。

このerbっていうテンプレートのライブラリを使います。smartyとかjspみたいなものとか言えばわかりやすいですかね、そっち系の人らには


使い方は簡単

<% #何かrubyのコード %>

こんな風に<%で挟んでrubyのコードを書くだけ
制御構文とか、変数とかもそのまんま使えるから、その間間に生成したいコードを混ぜていけばいいだけ

最後にputsで出しておけばあとはリダイレクトなりすればソースの完成〜
便利だわ。
変な前準備もいらないしね〜

追記:
ERBのコンストラクタ外で使っている変数を取り込む場合は出力の際に

hogegen.result(binding)

このようにして実行されているメソッド情報を渡してやる必要がある

Rubyレシピブック 第2版 268の技

Rubyレシピブック 第2版 268の技