public function test_recursion() { $x = new Template(null, "main"); $x->setContents("{recursive1}"); $x->set_recursionDepth(50); $x->add(new Template(dirname(__FILE__) . '/files/templates/recursive1.tmpl'), false); $x->add(new Template(dirname(__FILE__) . '/files/templates/recursive2.tmpl'), false); $rendered = $x->render(true); $this->assertTrue(strlen($rendered) > 0, "rendered value is blank... "); $matches = array(); $num = preg_match_all('~recursive1~', $rendered, $matches); $this->assertEquals(50, $num, "did not recurse... "); }
public function setBlockRow($handle, $removeDefs = true) { $name = $handle; $rowPlaceholder = $name; $reg = "/<!-- BEGIN {$handle} -->(.+){0,}<!-- END {$handle} -->/sU"; $m = array(); preg_match_all($reg, $this->_contents, $m); if (!is_array($m) || !isset($m[0][0]) || !is_string($m[0][0])) { throw new \Exception("could not find block row '" . $handle . "' in template '" . $this->name . ", filename=(" . $this->_origin . ")"); } else { if ($removeDefs) { $openHandle = "<!-- BEGIN {$handle} -->"; $endHandle = "<!-- END {$handle} -->"; $m[0][0] = str_replace($openHandle, "", $m[0][0]); $m[0][0] = str_replace($endHandle, "", $m[0][0]); } $this->_contents = preg_replace($reg, "{" . $rowPlaceholder . "}", $this->_contents); } $blockRow = new Template(null, $rowPlaceholder); $blockRow->setContents($m[0][0]); $this->_blockRows[$handle] = $blockRow; return $blockRow; }