タグパーサ系のクラス
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タグの細かいアトリビュートについては別途メモしよう。