1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- <?php
- /**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
- /**
- * Double quoted string inside a tag.
- *
- * @package Smarty
- * @subpackage Compiler
- * @ignore
- */
- class Smarty_Internal_ParseTree_Dq extends Smarty_Internal_ParseTree
- {
- /**
- * Create parse tree buffer for double quoted string subtrees
- *
- * @param object $parser parser object
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function __construct($parser, Smarty_Internal_ParseTree $subtree)
- {
- $this->subtrees[] = $subtree;
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
- /**
- * Append buffer to subtree
- *
- * @param \Smarty_Internal_Templateparser $parser
- * @param Smarty_Internal_ParseTree $subtree parse tree buffer
- */
- public function append_subtree(Smarty_Internal_Templateparser $parser, Smarty_Internal_ParseTree $subtree)
- {
- $last_subtree = count($this->subtrees) - 1;
- if ($last_subtree >= 0 && $this->subtrees[ $last_subtree ] instanceof Smarty_Internal_ParseTree_Tag &&
- $this->subtrees[ $last_subtree ]->saved_block_nesting < $parser->block_nesting_level
- ) {
- if ($subtree instanceof Smarty_Internal_ParseTree_Code) {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
- '<?php echo ' . $subtree->data . ';?>');
- } elseif ($subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data,
- '<?php echo "' . $subtree->data . '";?>');
- } else {
- $this->subtrees[ $last_subtree ]->data =
- $parser->compiler->appendCode($this->subtrees[ $last_subtree ]->data, $subtree->data);
- }
- } else {
- $this->subtrees[] = $subtree;
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $parser->block_nesting_level = count($parser->compiler->_tag_stack);
- }
- }
- /**
- * Merge subtree buffer content together
- *
- * @param \Smarty_Internal_Templateparser $parser
- *
- * @return string compiled template code
- */
- public function to_smarty_php(Smarty_Internal_Templateparser $parser)
- {
- $code = '';
- foreach ($this->subtrees as $subtree) {
- if ($code !== "") {
- $code .= ".";
- }
- if ($subtree instanceof Smarty_Internal_ParseTree_Tag) {
- $more_php = $subtree->assign_to_var($parser);
- } else {
- $more_php = $subtree->to_smarty_php($parser);
- }
- $code .= $more_php;
- if (!$subtree instanceof Smarty_Internal_ParseTree_DqContent) {
- $parser->compiler->has_variable_string = true;
- }
- }
- return $code;
- }
- }
|