4 * Double quoted string inside a tag.
11 * Double quoted string inside a tag.
14 * @subpackage Compiler
17 class Smarty_Internal_ParseTree_Dq
extends Smarty_Internal_ParseTree
20 * Create parse tree buffer for double quoted string subtrees
22 * @param object $parser parser object
23 * @param Smarty_Internal_ParseTree $subtree parsetree buffer
25 public function __construct($parser, Smarty_Internal_ParseTree
$subtree)
27 $this->parser
= $parser;
28 $this->subtrees
[] = $subtree;
29 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
30 $this->parser
->block_nesting_level
= count($this->parser
->compiler
->_tag_stack
);
35 * Append buffer to subtree
37 * @param Smarty_Internal_ParseTree $subtree parsetree buffer
39 public function append_subtree(Smarty_Internal_ParseTree
$subtree)
41 $last_subtree = count($this->subtrees
) - 1;
42 if ($last_subtree >= 0 && $this->subtrees
[$last_subtree] instanceof Smarty_Internal_ParseTree_Tag
&& $this->subtrees
[$last_subtree]->saved_block_nesting
< $this->parser
->block_nesting_level
) {
43 if ($subtree instanceof Smarty_Internal_ParseTree_Code
) {
44 $this->subtrees
[$last_subtree]->data
.= '<?php echo ' . $subtree->data
. ';?>';
45 } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent
) {
46 $this->subtrees
[$last_subtree]->data
.= '<?php echo "' . $subtree->data
. '";?>';
48 $this->subtrees
[$last_subtree]->data
.= $subtree->data
;
51 $this->subtrees
[] = $subtree;
53 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
54 $this->parser
->block_nesting_level
= count($this->parser
->compiler
->_tag_stack
);
59 * Merge subtree buffer content together
61 * @return string compiled template code
63 public function to_smarty_php()
66 foreach ($this->subtrees
as $subtree) {
70 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
71 $more_php = $subtree->assign_to_var();
73 $more_php = $subtree->to_smarty_php();
78 if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent
) {
79 $this->parser
->compiler
->has_variable_string
= true;