Ampita-0.06 ベータ

RubyAmrita もどきテンプレートの Apmita の修正と機能強化をしました。
Ampita-0.07 出力の見栄え改善版
https://tociyuki.sakura.ne.jp/archive/Ampita-0.06.pm
https://tociyuki.sakura.ne.jp/archive/Ampita-0.06.tar.gz
⇒ 前の版 Ampita-0.04 ベータ

サンプルコード

Ampita-0.09 フィックス版 に移しました。

修正

  1. $ampita->e({-foo=>'foo'}){-foo=>'foo'} を返すように変更しました。
    • 前の版では CGI->tagname に倣って {-foo=>'foo', -child=>''} を返していました。これでは、アトリビュートを変更したいだけなのに、テキスト・ノードを空にしてしまう不都合が生じますので、修正することにしました。
  2. 入れ子になっている、プレゼンテーション・オブジェクトの深いレベルでフィールドを見つけられないときは、トップレベルでフィールドを検索しなおすようにしました。
  3. リードオンリー・アトリビュート$node->attr の引数にアトリビュート名を与えられるようにしました。アトリビュート名には $node->attr('-href') のようにハイフンをつけてもいいですし、$node->attr('href') のようにつけなくてもかまいません。

追加

  1. アトリビュートをアウトプットから削除できるようにしました。
    • 例:{-title => undef} とします。
  2. コード・リファレンスを渡せるようにしました。これで、いちいちパッケージを作らなくても、innerTEXT やアトリビュートを修飾できるようになりました。
    • {foo => sub { my($c, $node) = @_; 'HOGE! ' . $node->text }}
  3. テンプレートの firstchild をテキストで取り出す $node->text を追加しました。
  4. テンプレートの firstchild をパラメータ置換する $node->text_args(@arg) を追加しました。
  5. テンプレートのアトリビュートをパラメータ置換する $node->attr_args('attrname', @arg) を追加しました。
  6. テンプレートの一部をダイナミックに置き換える $ampita->subst_template($po) を追加しました。
  7. 上記と合わせて使う、ダイナミック・エレメントを書きやすくする {foo => $ampita->dynamic_element($html)} を追加しました。
  8. ダイナミック・スコープ変数を扱えるようにしました。
    • ノードごとにダイナミック・スコープを自動生成します。
    • 親ノードを取り出す $c->parent を追加しました。
    • $c->get('name') で変数の値を取り出せます。
    • $c->set('name', $value) で変数に値をセットできます。
    • $c->get(親ノードid名) で親ノードを取り出せます。
    • $c->get('$.') で繰り返しの項目番号を取り出せます。