summaryrefslogtreecommitdiff
path: root/Transcompiler.php
diff options
context:
space:
mode:
Diffstat (limited to 'Transcompiler.php')
-rw-r--r--Transcompiler.php6
1 files changed, 3 insertions, 3 deletions
diff --git a/Transcompiler.php b/Transcompiler.php
index 8b52fa2..b92663c 100644
--- a/Transcompiler.php
+++ b/Transcompiler.php
@@ -295,7 +295,7 @@ class Transcompiler {
throw new ParseCompileError("self::Transcompile Error: name missing in <ste:mktag>.", $ast->tpl, $ast->offset);
}
- $fxbody = "\$outputstack = array(''); \$outputstack_i = 0;\$ste->vars['_tag_parameters'] = \$params;\n";
+ $fxbody = "\$outputstack = array(''); \$outputstack_i = 0;\$ste->set_local_var('_tag_parameters', \$params);\n";
list($tagname, $tagname_pre) = self::_transcompile($ast->params["name"], true);
@@ -312,7 +312,7 @@ class Transcompiler {
$fxbody .= self::_transcompile($ast->sub);
$fxbody .= "return array_pop(\$outputstack);";
- $code .= "\$tag_fx = function(\$ste, \$params, \$sub)" . $usemandatory . "\n{\n" . self::indent_code($fxbody) . "\n};\n";
+ $code .= "\$tag_fx = \$ste->make_closure(function(\$ste, \$params, \$sub)" . $usemandatory . "\n{\n" . self::indent_code($fxbody) . "\n});\n";
$code .= $tagname_pre;
$code .= "\$ste->register_tag($tagname, \$tag_fx);\n";
@@ -394,7 +394,7 @@ class Transcompiler {
}
$code .= "\$outputstack[\$outputstack_i] .= \$ste->call_tag('" . Misc::escape_text($node->name) . "', \$${paramarray}, ";
- $code .= empty($node->sub) ? "function(\$ste) { return ''; }" : self::transcompile($node->sub);
+ $code .= empty($node->sub) ? "function(\$ste) { return ''; }" : ("\$ste->make_closure(" . self::transcompile($node->sub) . ")");
$code .= ");\n";
}
}