= amritaツアー2
このドキュメントで説明している機能は、V1.0ではFIXしてないものです。
今後、変更される可能性があります。
---
== パーツテンプレート(実験的機能)
=== コードと出力
コード:
:include: sample/tour/parts1.rb
出力:
Scripting Languages
=== description
このようなクラスがあったとします。
class Header
attr_reader :title
def initialize(title)
@title = title
end
end
次のようなテンプレートを書いて、
クラスにテンプレートを「インストール」すると…
Headerクラスは、このテンプレートに従って、自分自身を展開して表示するこ
とができるようになります。
h = Header.new("Scripting Languages")
puts h.to_s # => Scripting Languages
もし、このオブジェクトをモデルデータの一部分として使用すると、
HTMLドキュメントに埋めこまれます。
別のモジュールにテンプレートをインストールして、
実行時に使用するモジュールを選択することも可能です。
詳細は下記を参照してください。
sample/tour/parts2.rb
----
== 属性展開(実験的機能)
=== コードと出力
コード:
:include: sample/tour/makeurl2.rb
出力:
=== 説明
tmpl.expand_attr = true
このアトリビュートが設定されていると、
"@url"のような"@"で始まる文字が設定された属性をチェックします。
If this attribute was set, then amrita checks all attribute values and
convert it with model data if the value in template begins "@" like
"@url".
---
== CGIKitインターフェース(実験的機能)
CGIKit(http://www.spice-of-life.net/download/cgikit/index_en.html) は
RubyによってCGI アプリケーションを開発するためのフレームワークです。
amritaには、CGIKitとのインターフェースがあります。CKAmritaElement を他
の標準のコンポーネントと同様に使用することで、CGIアプリケーションを手早く開発することができます。
=== コード と出力
HelloWorld.cgi:
require 'amrita/cgikit'
app = CKApplication.instance
app.run
MainPage/MainPage.html
Hello World
MainPage/MainPage.ckd
HelloWorld : CKAmritaElement {
hello = sayHello;
}
MainPage/MainPage.rb
class MainPage < CKComponent
def sayHello
"Hello World!"
end
end
output:
Hello World!
=== 説明
ckdファイルでCKAmritaElementに割りあてられた...の間のHTMLソースは、
amritaにテンプレートとして渡されます。
それ以外のHTMLソースはCGIKitが普通通りに処理します。
ですから、CGIKitの標準コンポーネントと
amrita(CKAmritaElement: amritaのテンプレートエンジンを含むCGIKitのコンポーネント)を混在させることが可能になります。
CKAmritaElement は モデルデータをCGIKitのコンポーネントから取り出します。
具体的には以下のデータを使用します。
* メインページオブジェクト(親コンポーネント)のメソッド
+id+ 属性はメソッドサーチに使用されます。
ckdファイルで指定することにより他のメソッド名を使用することもできます。
* ckdファイルで静的に設定された値
* 他のコンポーネントによって動的に設定された値
FORMやアクションにはCGIKitを使用して、結果表示にamritaを使うのがよいと思います。
(CGIKitではフォーム内のボタンをRubyメソッドにバインドできます)
詳細は sample/cgikit/Examples を参照してください。
---
== Amrita Script (実験的機能)
Amrita Script は テンプレートの中にモデルデータを含める実験的な機能です。
=== コードと出力
コード:
:include: sample/tour/amstest.ams
出力:
$ ams amstest.ams
hello world
Amrita is a html template libraly for Ruby
Wed Aug 07 18:12:38 JST 2002/
last-modified Wed Aug 07 08:44:33 JST 2002
=== 説明
+ams+ というコマンド(bin/amsとしてamritaのアーカイブに含まれています)は
の中のテキストを抜き出して、
Rubyのコードとして評価します。
そして、その評価結果をモデルデータとしてamritaが使用します。
---
== amx: もうひとつのXML用スタイルシート(実験的機能)
amx(AMrita eXtention for XML)はXML用スタイルシートです。
XMLドキュメントをHTMLに変換します。
出力の形式を指定するのにamritaのテンプレートが使用できます。
=== コードと出力
source document:
:include: sample/tour/amxtest.xml
template:
:include: sample/tour/amxtest.amx
output:
amx sample
amx is a XML document.
It contains model data as well-formed XML, HTML template
and a small Ruby code map both.
This is a sample AMX document.
Fri Aug 23 13:35:02 JST 2002
=== 説明
amxを使用するには、下記のコマンドを使用してください。
$ amx amxtest.xml
ソースドキュメントは、整形式(well-formed)のXMLなら、どんなXML文書でもかまいません。
ただし、先頭に以下の指示を含む必要があります。
href属性で、amxテンプレートへのパスを指定します。
amxは指定されたテンプレートファイルを読みこみ、そこからテンプレートオブジェクトを生成します。
テンプレートファイルは特別なXML文書で、以下の二つのパートに分かれています。
* 要素
これは(XHTMLで記述された)普通のamritaのテンプレートです
* 要素
この要素を使用すると、テンプレートオブジェクトにメソッドを追加できます。
テンプレートオブジェクトは、Amx::Template クラスのオブジェクトです。
REXMLのDOMツリーとしてロードされたソースドキュメントからモデルデータを作成します。
=== 補足
amritaホームページのトップページはamxで生成されています。
[docs/index.xml] ソースドキュメント
[docs/index.amx] テンプレートドキュメント
[docs/amritadoc.rb] Rubyコード
amxの詳細な使用はまだ決定していません。
もし、amxを使おうと思ったら、気軽に私にメールしてください。
* ソースXML文書
* HTML文書(こういうふうに変換したいというもの)
をもらえたら、どうやったらいいかわかるようなサンプルを作成して、次のリリースに含めます。
サンプルがたくさん集まったら、ちゃんとamxのドキュメントを書いて仕様を決定します。