00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 class PHPTAL_Attribute_TAL_Define extends PHPTAL_Attribute
00024 {
00025 function
activate(&$g, &$tag)
00026 {
00027
if (preg_match('/\|\s*?\bdefault\b/sm', $this->expression)) {
00028 $g->doOBStart();
00029 $err = $tag->generateContent($g);
00030
if (PEAR::isError($err)) {
return $err; }
00031 $g->doOBEnd('$__default__');
00032 $default =
true;
00033 }
00034
00035
00036
if (preg_match('/^[a-z0-9_]+$/i', $this->expression)) {
00037 $g->doOBStart();
00038 $err = $tag->generateContent($g);
00039
if (PEAR::isError($err)) {
return $err; }
00040 $g->doOBEndInContext($this->expression);
00041 }
else {
00042 $exp =
new PHPTAL_Expression($g, $tag, $this->expression);
00043 $exp->setPolicy(
_PHPTAL_ES_RECEIVER_IS_CONTEXT);
00044 $err = $exp->generate();
00045
if (PEAR::isError($err)) {
return $err; }
00046 }
00047
if (isset($
default)) { $g->execute('unset($__default__)'); }
00048 }
00049 }
00050
00051 ?>