/**
     */
    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']);
    }
Пример #2
0
 /**
  * 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;
 }