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->subtrees[] = $subtree;
29 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
30 $parser->block_nesting_level = count($parser->compiler->_tag_stack);
35 * Append buffer to subtree
37 * @param \Smarty_Internal_Templateparser $parser
38 * @param Smarty_Internal_ParseTree $subtree parse tree buffer
40 public function append_subtree(Smarty_Internal_Templateparser $parser, 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 &&
44 $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
46 if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
47 $this->subtrees[ $last_subtree ]->data =
48 $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
49 '<?php echo ' . $subtree->data . ';?>');
50 } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
51 $this->subtrees[ $last_subtree ]->data =
52 $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
53 '<?php echo "' . $subtree->data . '";?>');
55 $this->subtrees[ $last_subtree ]->data =
56 $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
59 $this->subtrees[] = $subtree;
61 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
62 $parser->block_nesting_level = count($parser->compiler->_tag_stack);
67 * Merge subtree buffer content together
69 * @param \Smarty_Internal_Templateparser $parser
71 * @return string compiled template code
73 public function to_smarty_php(Smarty_Internal_Templateparser $parser)
76 foreach ($this->subtrees as $subtree) {
80 if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
81 $more_php = $subtree->assign_to_var($parser);
83 $more_php = $subtree->to_smarty_php($parser);
88 if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
89 $parser->compiler->has_variable_string = true;