$Id: quilt.html,v 1.4 1999/02/21 07:31:59 mas Exp $

ohp|quilt.rb

HTML生成モジュールの議論を見ていて刺激されました。 以前作っていたものを整理して公開します。 quilt.rbは超簡易HTML生成クラスです。 ohp.rbは箇条書ファイルを解釈してHTMLファイル群を生成する quilt.rbのサンプルです。

HTMLの生成に関して

CGIなどではHTML文書の生成をプログラムで行ないたいことが、よくあります。 かと言ってHTML文書に相当するコードを書くのは退屈です。

私が欲しいと思うのは、次のようなものです。

  1. HTMLを読んで解釈してTreeを作ってくれて、
  2. このTreeに対して挿入や、変更が行なえて
  3. HTMLを再構築できる。
  4. さらに正しいHTMLになるように出力して、ちゃんとしたヘッダ部を書いてくれる

実現たいへんそうで、 CGIや小さなツールでは重そうだし、 なんだかめんどくさい予感がします。


今回の提案

HTMLのテンプレートに「&hoge;」の様にEntity風に縫い目に印をつけておいて、 アプリケーションで縫い合わせる(置換する)という提案です。 (→quilt.tgz)
メリットは次の通りです。

例えば、こういうテンプレート(抜粋)を与えて

...
データベース更新: &MODIFIED;
<HR>
<ADDRESS><A href="&MAILTO;">&AUTHOR;</A></ADDRESS>
</BODY>

次のような結果を得ます

...
データベース更新: 1999.2.19 14時頃
<HR>
<ADDRESS><A href="m_seki@mva.biglobe.ne.jp">Masatoshi SEKI</A></ADDRESS>
</BODY>

Quilt Class

QuiltはHTMLテンプレートを保持し、HTMLを生成するClassです。

Class method

new(string)
Quiltを生成します。引数はテンプレートとなるStringです。
new_with_file(fname)
Quiltを生成します。引数のファイル名のファイルをテンプレートとします。

Instance method

sew_by ブロック または piece ブロック
HTMLテンプレートの中のEntityを置換した文字列を返します。 イテレータです。ブロックにEntity名を与えその戻り値に置換します。 戻り値がnilのとき、置換しません。

ohp.rb

ohp.rbは箇条書風ファイルを読んで、HTMLファイル群を生成するサンプルです。 テンプレートファイル名、箇条書ファイル名の順に指定して起動します。 起動例は次の通り。

% ruby ohp.rb ohp.html ohp.txt

tmp/ というディレクトリの下に、HTMLファイルができます。


m_seki@mva.biglobe.ne.jp