// require_once PHPTAL_DIR.'PHPTAL/Php/Attribute.php'; // METAL Specification 1.0 // // argument ::= Name // // Example: // //

// Copyright 2001, Foobar Inc. //

// // PHPTAL: // // //

// Copyright 2001, Foobar Inc. //

// // /** * @package phptal.php.attribute.metal * @author Laurent Bedubourg */ class PHPTAL_Php_Attribute_METAL_DefineMacro extends PHPTAL_Php_Attribute { public function start() { $macroname = strtr(trim($this->expression),'-','_'); if (!preg_match('/^[a-z0-9_]+$/i', $macroname)){ throw new PHPTAL_Exception('Bad macro name "'.$macroname.'"', $this->tag->getSourceFile(), $this->tag->getSourceLine()); } $this->tag->generator->doFunction($macroname, '$tpl, $ctx'); $this->tag->generator->doXmlDeclaration(); $this->tag->generator->doDoctype(); $this->tag->generator->doSetVar('$tpl', 'clone $tpl'); $this->tag->generator->doSetVar('$ctx', '$tpl->getContext()'); $this->tag->generator->doSetVar('$glb', '$tpl->getGlobalContext()'); $this->tag->generator->doSetVar('$_translator', '$tpl->getTranslator()'); } public function end() { $this->tag->generator->doEnd(); } }