Kwartz Rubyで実装されたテンプレートシステム

http://www.kuwata-lab.com/webtech/kwartz/index.html

今ごろこんなことを書くとXiのメーリングリストをろくに読んでいないことがバレバレなのだが.


Kwartzとは?

Kwartz(*2)とはRubyで実装されたテンプレートシステムです。次のような特徴を持ちます。

プレゼンテーションデータとプレゼンテーションロジックとが分離可能

通常のテンプレートシステムではテンプレートとメインプログラムとを分離します。 Kwartzでは更に、テンプレートをプレゼンテーションデータとプレゼンテーションロジックとに分離します。 これにより、プレゼンテーションロジックがHTMLの中に混じることも、またメインプログラムに紛れ込むこともありません。
高速な動作

Kwartzでは、テンプレート(プレゼンテーションデータとプレゼンテーションロジック)から出力用スクリプトを生成します。 これをあらかじめ行っておくため、実行時には出力用プログラムを呼び出すだけでよく、極めて高速に動作します。 またDOMツリーのような木構造を使わずに済むため、他のテンプレートシステムよりも高速です。
複数のプログラミング言語に対応

Kwartzは内部で独自の中間言語を採用することにより、様々なプログラミング言語から使用できるようになっています。 つまり、ひとつのHTMLテンプレートを様々な言語から使用することができるのです。 また使用する言語を変えたとしても、プレゼンテーション層は何も変更する必要がありません。 現在のところ、RubyPHPJSP、eRuby、ERB、Velocityに対応しています。
HTMLテンプレートがSGML形式を崩さない

Kwartzでは、HTMLテンプレートにおけるマーキング(印付け)をSGMLのタグ形式で行っています。 そのため、Jakarta Velocity や Template-Toolkit のようにHTMLテンプレートのデザインを崩してしまうことがありません。
任意のテキストファイルで使用可能

Kwartzでは、Kwartz用の属性がついたタグのみを認識し、それ以外のタグはただのプレーンテキストとみなします。 またXMLパーサーを使用せず独自のパーサーを使用しています。 そのため、Enhydra XMLC や amrita のようにXMLやHTMLでしか使用できないということはなく、任意のテキストファイルで使用可能です。
自動サニタイズ機能をサポート

Kwartzでは、サニタイズを自動的に行うようにすることができます。 つまり、いちいち「CGI.escapeHTML(var)」や「htmlspecialchars(var)」と書く必要がありません。 またサニタイズ機能はオン/オフすることができます。

しかもこれ未踏15シンポジウムで発表していたそうな.

10:30〜11:10 桑田 誠 氏 加藤PM プレゼンテーション層を2つに分割した、Web用超高速テンプレートシステムの開発

ただ土曜日の午前中というのは僕は夢の世界にしか存在していない時間帯だから,見にいけたかどうかは怪しい.
ちょっと検討してみるか

追記

公式サイトに未踏シンポジウムでのプレゼンが追加
http://www.kuwata-lab.com/webtech/kwartz/mito_2004-02-14/index.htm

[permalink][contents][page top]