for in else end

今日、Zope ガイドを購入した。そして、今日、読み終えた(マンガかよ)。
この本を購入したきっかけはenbug diary(2008-01-31)を読んだことです。この記事を読んで、Zope を知れば、未来を知ることができるかもしれない。と思ったのですが、この本には私が考えているような未来はありませんでした。
私にとって有益なことは DTML (ERB みたいなもの) の foreach else でした。
Ruby で概念的なものを書くと、 以下のような感じでしょうかね。

for i in ary
  puts(i)
else
  puts("要素がありません。")
end

これは使えるかもしれません。
私は Rails のテンプレートで、配列の要素があったらループの処理、なかったら「要素がありません」といった注意書きを表示、ということしています。
このとき、for else end があれば ERB のテンプレートに次のように記述できると思います。

<ol>
<%- for sp in SampleProgram.find(:all, :order => "updated_at") -%>
  <li><%= h(sp.title) %></li>
<%- else -%>
  <li>サンプルプログラムが登録されていません。</li>
<%- end -%>
</ol>

普通に for を使うとこんな感じ。

<ol>
<%- sample_programs = SampleProgram.find(:all, :order => "updated_at") -%>
<%- if sample_programs.length > 0 -%>
  <%- for sp in sample_programs -%>
  <li><%= h(sp.title) %></li>
  <%- end -%>
<%- else -%>
  <li>サンプルプログラムが登録されていません。</li>
<%- end -%>
</ol>

で、パッチです。みたいにすぐにパッチを作成できるスキルがあればいいのですが、そんなわけはありません。9/25 には ruby-1.9.1 が出て、仕様が凍結されちゃうんですよね。誰かパッチを作ってくれないかな。