= Tempura - TEMPlate Utility for Ruby Application [((<リファレンス|URL:references.ja.html>))] [((<変更履歴|URL:changes.ja.html>))] [((<ダウンロード|URL:http://www.fobj.com/tempura/files/>))] 最新バージョンは 0.1.2r3 です。 == 概要 Tempura は、XML(XHTMLなど)で書かれたテンプレートと実データ(任意のオブ ジェクト)を結び付け、生きたXML文書を生成するための、いわゆるテンプレー トライブラリです。オブジェクト指向スクリプト言語Ruby用のライブラリとし て実装されています。 === 特色 : プレビュー可能なXML形式の文書によるテンプレート Tempuraでは、XML準拠形式((- REXMLライブラリでパース可能な形式-))の テキストをテンプレートとします。テンプレートは、そのままWEBブラウ ザでプレビューすることが可能です。また多くのHTMLエディタでの編集も 可能(なはず)です。テーブルなどで検索結果を列挙するようなビューのプ レビューにも対応できるように工夫されています。 : 数種類の特別な属性名を持つXML属性のみが展開に作用 Tempuraでは、テンプレート内の特定のXML属性だけが展開に作用します。 Tempura用のXML属性は、どのXML要素に対しても効果を与えることができ ます。展開に作用するXML属性名には、他のソフトウェアやCSSと比較的衝 突しにくい名前を採用しています。 : モデルデータは任意のRubyオブジェクト 配列やハッシュだけでなく任意のRubyオブジェクトを、モデルデータとし てそのまま使用可能です。 : ビューとモデルの分離 画面デザインとアプリケーションロジックを明確に分離できます。見た目 を重視するようなWEBアプリケーションの開発において、画面デザイン担 当者(WEBデザイナー)とプログラマの作業が、それぞれ影響されにくく独 立してすすめやすくなります。 : イベント駆動型WEBアプリケーションのサポート WEBアプリケーションをイベント駆動のGUIアプリケーションという視点で 見たときに、ユーザの操作によるイベントを簡単に扱う仕組みを持ってい ます。この仕組みは、HTMLのa要素やform要素によるユーザのアプリケー ション操作とメソッド呼び出しの関係の抽象化をサポートします。 : WEBアプリケーションフレームワークDiv用のライブラリ部品 WEBアプリケーションフレームワークDivのためのライブラリ部品を装備し ています。Divのテンプレートとして、Erbに加えて、プレビュー可能な HTMLを使うことが可能になります。 === 開発の理由 特色のところを読んで、どこかで読んだことのある文句だと感じた方も多いか もしれません。Tempuraと同種のテンプレートライブラリはすでに数多く存在 します。Tempuraに比較的近いもの・Tempuraが影響を受けているものとしては、 Ruby用のテンプレートライブラリである (())や (())などがあげられま す。 では、なぜあえて新たにTempuraを作ったのでしょうか?理由は、amrita や XTemplateなどに見られる利点である「プレビュー可能なテンプレート」と、 Ruby で書かれたWeb アプリケーションフレームワークDivなどに見られる利点 である「ユーザ操作を抽象的に扱うイベント駆動型プログラミング」を同時に 行いたい、というところにありました。 DivのGUIアプリケーション風イベント駆動型プログラミングでは、eRuby で記 述したビューから a や form などのメソッドを呼ぶことにより、 type='hidden' を持つinput要素を利用したメソッド呼出へのマッピングなど の泥くさい部分を隠すことができます。ユーザによる操作((-Tempura ではイ ベントと呼びます-))が抽象化され、対応するメソッド呼出との関係をシンプ ルに扱うことができるわけです。しかし、eRuby によるビューは、HTMLとして 特殊な構文のために、視覚上のデザインをそのままHTMLブラウザで確認するこ とができません。 一方、amirtaやXTemplateでは、テンプレート(ビュー)はそのままHTMLであり、 「視覚上のデザインをそのままHTMLブラウザで確認」することができます。し かし、テンプレートの中で、ユーザによる操作(イベント)をメソッド呼出にマッ プするためには、form要素・hidden型のinput要素・a要素のhref属性などを、 生のHTMLとして記述する必要が出てくるでしょう。 こういったことをふまえた上で、Tempuraは * プレビュー可能なテンプレート * Webアプリケーションでのユーザ操作の抽象化 を考慮したテンプレートライブラリとして、作成されました。 == 使用例 === テンプレート:
nameauthor
(will be replaced with a name of each item) (will be replaced with an author of each item)
name: author:
=== モデル: class Item attr_reader :name, :author def initialize(name, author) @name = name @author = author end end class ItemContainer attr_reader :items def initialize @items = [] end def add(name, author) @items << Item.new(name, author) end end === 実データ: data = ItemContainer.new data.add("Ruby", "matz") data.add("Perl", "Larry Wall") data.add("Python", "Guido") === 展開: tmpl = Tempura::Template.new( テンプレート ) tmpl.default_action = "myapp.cgi" puts tmpl.expand(data) === 出力 (= テンプレート + 実データ):
nameauthor
Ruby matz
Perl Larry Wall
Python Guido
name: author:
== ドキュメント * ((<リファレンスマニュアル|URL:references.ja.html>)) * ((<変更履歴|URL:changes.ja.html>)) == 実行環境 === 最低限必要なソフトウェア * Ruby - 1.6 以降 * REXML - XMLパーサ。Ruby 1.8 には標準添付 === ユニットテストを実行するために必要なソフトウェア * Test::Unit - ユニットテストのためのライブラリ。Ruby 1.8 には標準添付 * uconv - utf8とeucの変換のためのライブラリ === より便利に使うために推奨するソフトウェア * Div - WEBアプリケーションフレームワーク * WEBrick - HTTPサーバーとして簡単に使える。Ruby 1.8 には標準添付 それぞれ以下からダウンロード可能です。 * Ruby - (()) * REXML - (()) * Test::Unit - (()) * uconv - (()) * Div - (()) * WEBrick - (()) == ダウンロード (())からダウンロードできます。 == インストール $ ruby install.rb -dオプションでインストール先を指定することができます。 $ ruby install.rb -d {anywhere} == ライセンス Tempuraに含まれるソースコードおよびドキュメントは藤本尚邦が著作権を保持 します。それらのファイルは GNU Lesser General Public Licence version 2 に従って配布するものとします。 == 免責事項 本プログラムは無保証です。作者は、本プログラムをサポートする意志はあり ますが、プログラム自身のバグ、あるいは、本プログラムの実行などから発生 するいかなる損害に対しても責任を持ちません。 == ホームページ (()) 藤本尚邦