/** */ public function testGetBlocks() { $strTemplate = <<<EOT <!-- BEGIN one --> <!-- BEGIN three --> <!-- BEGIN four --> <!-- BEGIN six --> some text <!-- END six --> <!-- END four --> <!-- END three --> <!-- BEGIN five --> <!-- END five --> <!-- END one --> <!-- BEGIN two --> <!-- END two --> EOT; $arBlocks = HTML_Template_PHPLIB_Generator::getBlocks(HTML_Template_PHPLIB_Helper::splitLines($strTemplate)); $this->assertEquals(2, count($arBlocks)); $this->assertArrayHasKey('one', $arBlocks); $this->assertArrayHasKey('two', $arBlocks); $this->assertEquals(2, count($arBlocks['one']['sub'])); $this->assertArrayHasKey('three', $arBlocks['one']['sub']); $this->assertArrayHasKey('five', $arBlocks['one']['sub']); $this->assertArrayHasKey('four', $arBlocks['one']['sub']['three']['sub']); }
/** * Creates the code to use a given template file * * @param string $strFile Template file * @param string $strTplName Template reference name * @param string $strPrefix Prefix to prepend before the code * * @return string PHP code */ function getCodeBlockDefinition($strFile, $strTplName = null, $strPrefix = '$tpl') { $arBlocks = HTML_Template_PHPLIB_Generator::getBlocks(HTML_Template_PHPLIB_Helper::getLines($strFile)); if ($strTplName === null) { $strTplName = HTML_Template_PHPLIB_Generator::getTemplateNameFromFilename($strFile); } $nl = "\r\n"; $code = ''; $code .= $strPrefix . ' = new HTML_Template_PHPLIB();' . $nl; $code .= HTML_Template_PHPLIB_Generator::getCodeBlock($arBlocks, $strTplName, $strPrefix); $code .= $nl; $code .= '//TODO: do something with the code' . $nl; $code .= $nl; $code .= $strPrefix . '->finish(' . trim($strPrefix) . "->parse('TMP', '" . $strTplName . "'));" . $nl; return $code; }