RhacoのTemplateParserについてのメモ

2005年11月19日(土) 08:17

RhacoのO/Rで動的にmodel系phpコードをジェネレートするために、Rhacoのテンプレートシステムを復習(ノードキュメントだからな、今のところ)。

タグパーサ系のクラス

  • tag.TagParser: テンプレートの基底クラス。read/writeやキャッシュを制御する。
  • tag.TemplateParser: TagParserを継承したクラス。ループ等を制御する。
  • tag.HtmlParser: TemplateParserを継承したクラス。htmlに特化したinputタグ等の制御を行う。
今回は、htmlは関係ないので、TemplateParserを使用する。
RhacoのUnitTestを使用して、test.txtを処理してみた。
やはりWeb系のテンプレートを主に指向しているので、sgml系でないものを処理しようとするとちょっとテンプレートの見た目がビミョー。
以下超簡易サンプルコード
  • TemplateTest.php
    <?php
    define("RHACO_DIR","/open/workspace/rhaco/");
    require_once(RHACO_DIR."rhaco.php");

    define("LOG_DISP_LEVEL", "debug");

    Rhaco::import("test/UnitTest");

    Rhaco::import("tag/TemplateParser");

    class TemplateTest extends UnitTest {
    var $templateParser;


    function setUp() {
    $this->templateParser = new TemplateParser();
    }

    function testTemplateExec() {
    $list = array();
    $list[] = "x";
    $list[] = "y";
    $list[] = "z";
    $arg["testData"] = $list;
    $this->templateParser->setRequest($arg);
    print $this->templateParser->write("test/test.txt");
    }
    }
    new TemplateTest();
    ?>
  • test/test.txt
    test text for TemplateParser

    <loop class="testData" id="data">
    <if pattern="{$data} == 'x'">
    It's X!
    <else>
    It's not X!
    </if>
    {$data}:
    </loop>

    end
  • 実行結果
    [Debug 2005/11/19 22:07:46]:[templateparser] view file [test/test.txt]
    test text for TemplateParser

    It's X!
    x:
    It's not X!
    y:
    It's not X!
    z:

    end
loop/for/ifタグの細かいアトリビュートについては別途メモしよう。


Feedbacks

Tags