4 * Double quoted string inside a tag.
12 * Double quoted string inside a tag.
15 * @subpackage Compiler
18 class Smarty_Internal_ParseTree_Dq
extends Smarty_Internal_ParseTree
21 * Create parse tree buffer for double quoted string subtrees
23 * @param object $parser parser object
24 * @param Smarty_Internal_ParseTree $subtree parse tree buffer
26 public function __construct($parser, Smarty_Internal_ParseTree
$subtree)
28 $this->parser
= $parser;
29 $this->subtrees
[] = $subtree;
30 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
31 $this->parser
->block_nesting_level
= count($this->parser
->compiler
->_tag_stack
);
36 * Append buffer to subtree
38 * @param Smarty_Internal_ParseTree $subtree parse tree buffer
40 public function append_subtree(Smarty_Internal_ParseTree
$subtree)
42 $last_subtree = count($this->subtrees
) - 1;
43 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
) {
44 if ($subtree instanceof Smarty_Internal_ParseTree_Code
) {
45 $this->subtrees
[$last_subtree]->data
= $this->parser
->compiler
->appendCode($this->subtrees
[$last_subtree]->data
, '<?php echo ' . $subtree->data
. ';?>');
46 } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent
) {
47 $this->subtrees
[$last_subtree]->data
= $this->parser
->compiler
->appendCode($this->subtrees
[$last_subtree]->data
, '<?php echo "' . $subtree->data
. '";?>');
49 $this->subtrees
[$last_subtree]->data
= $this->parser
->compiler
->appendCode($this->subtrees
[$last_subtree]->data
, $subtree->data
);
52 $this->subtrees
[] = $subtree;
54 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
55 $this->parser
->block_nesting_level
= count($this->parser
->compiler
->_tag_stack
);
60 * Merge subtree buffer content together
62 * @return string compiled template code
64 public function to_smarty_php()
67 foreach ($this->subtrees
as $subtree) {
71 if ($subtree instanceof Smarty_Internal_ParseTree_Tag
) {
72 $more_php = $subtree->assign_to_var();
74 $more_php = $subtree->to_smarty_php();
79 if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent
) {
80 $this->parser
->compiler
->has_variable_string
= true;