* @author Kornel LesiƄski * @license http://www.gnu.org/licenses/lgpl.html GNU Lesser General Public License * @version SVN: $Id$ * @link http://phptal.org/ */ /** TAL Specifications 1.4 * * argument ::= (['text'] | 'structure') expression * * Example: * *

Fred Farkas

* * * * * @package PHPTAL * @subpackage Php.attribute.tal * @author Laurent Bedubourg */ class PHPTAL_Php_Attribute_TAL_Content extends PHPTAL_Php_Attribute implements PHPTAL_Php_TalesChainReader { public function before(PHPTAL_Php_CodeWriter $codewriter) { $expression = $this->extractEchoType($this->expression); $code = $codewriter->evaluateExpression($expression); if (is_array($code)) { return $this->generateChainedContent($codewriter, $code); } if ($code == PHPTAL_Php_TalesInternal::NOTHING_KEYWORD) { return; } if ($code == PHPTAL_Php_TalesInternal::DEFAULT_KEYWORD) { return $this->generateDefault($codewriter); } $this->doEchoAttribute($codewriter, $code); } public function after(PHPTAL_Php_CodeWriter $codewriter) { } private function generateDefault(PHPTAL_Php_CodeWriter $codewriter) { $this->phpelement->generateContent($codewriter, true); } protected function generateChainedContent(PHPTAL_Php_CodeWriter $codewriter, $code) { $executor = new PHPTAL_Php_TalesChainExecutor($codewriter, $code, $this); } public function talesChainPart(PHPTAL_Php_TalesChainExecutor $executor, $exp, $islast) { if (!$islast) { $var = $executor->getCodeWriter()->createTempVariable(); $executor->doIf('!phptal_isempty('.$var.' = '.$exp.')'); $this->doEchoAttribute($executor->getCodeWriter(), $var); $executor->getCodeWriter()->recycleTempVariable($var); } else { $executor->doElse(); $this->doEchoAttribute($executor->getCodeWriter(), $exp); } } public function talesChainNothingKeyword(PHPTAL_Php_TalesChainExecutor $executor) { $executor->breakChain(); } public function talesChainDefaultKeyword(PHPTAL_Php_TalesChainExecutor $executor) { $executor->doElse(); $this->generateDefault($executor->getCodeWriter()); $executor->breakChain(); } }