]> git.mxchange.org Git - friendica.git/blob - vendor/smarty/smarty/libs/sysplugins/smarty_internal_parsetree_dq.php
Add Smarty to Composer
[friendica.git] / vendor / smarty / smarty / libs / sysplugins / smarty_internal_parsetree_dq.php
1 <?php
2
3 /**
4  * Double quoted string inside a tag.
5  *
6  * @package    Smarty
7  * @subpackage Compiler
8  * @ignore
9  */
10
11 /**
12  * Double quoted string inside a tag.
13  *
14  * @package    Smarty
15  * @subpackage Compiler
16  * @ignore
17  */
18 class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
19 {
20     /**
21      * Create parse tree buffer for double quoted string subtrees
22      *
23      * @param object                    $parser  parser object
24      * @param Smarty_Internal_ParseTree $subtree parse tree buffer
25      */
26     public function __construct($parser, Smarty_Internal_ParseTree $subtree)
27     {
28         $this->subtrees[] = $subtree;
29         if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
30             $parser->block_nesting_level = count($parser->compiler->_tag_stack);
31         }
32     }
33
34     /**
35      * Append buffer to subtree
36      *
37      * @param \Smarty_Internal_Templateparser $parser
38      * @param Smarty_Internal_ParseTree       $subtree parse tree buffer
39      */
40     public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
41     {
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
45         ) {
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 . '";?>');
54             } else {
55                 $this->subtrees[ $last_subtree ]->data =
56                     $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
57             }
58         } else {
59             $this->subtrees[] = $subtree;
60         }
61         if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
62             $parser->block_nesting_level = count($parser->compiler->_tag_stack);
63         }
64     }
65
66     /**
67      * Merge subtree buffer content together
68      *
69      * @param \Smarty_Internal_Templateparser $parser
70      *
71      * @return string compiled template code
72      */
73     public function to_smarty_php(Smarty_Internal_Templateparser $parser)
74     {
75         $code = '';
76         foreach ($this->subtrees as $subtree) {
77             if ($code !== "") {
78                 $code .= ".";
79             }
80             if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
81                 $more_php = $subtree->assign_to_var($parser);
82             } else {
83                 $more_php = $subtree->to_smarty_php($parser);
84             }
85
86             $code .= $more_php;
87
88             if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
89                 $parser->compiler->has_variable_string = true;
90             }
91         }
92
93         return $code;
94     }
95 }