BVB Source Codes

The latest thinkphp v5.2 work order system Show smarty_internal_parsetree.php Source code

Return Download The latest thinkphp v5.2 work order system: download smarty_internal_parsetree.php Source code - Download The latest thinkphp v5.2 work order system Source code - Type:.php
  1. <?php
  2. /**
  3.  * Smarty Internal Plugin Templateparser Parsetrees
  4.  *
  5.  * These are classes to build parsetrees in the template parser
  6.  *
  7.  * @package Smarty
  8.  * @subpackage Compiler
  9.  * @author Thue Kristensen
  10.  * @author Uwe Tews
  11.  */
  12.  
  13. /**
  14.  * @package Smarty
  15.  * @subpackage Compiler
  16.  * @ignore
  17.  */
  18. abstract class _smarty_parsetree {
  19.  
  20.     /**
  21.      * Parser object
  22.      * @var object
  23.      */
  24.     public $parser;
  25.     /**
  26.      * Buffer content
  27.      * @var mixed
  28.      */
  29.     public $data;
  30.  
  31.     /**
  32.      * Return buffer
  33.      *
  34.      * @return string  buffer content
  35.      */
  36.     abstract public function to_smarty_php();
  37.  
  38. }
  39.  
  40. /**
  41.  * A complete smarty tag.
  42.  *
  43.  * @package Smarty
  44.  * @subpackage Compiler
  45.  * @ignore
  46.  */
  47. class _smarty_tag extends _smarty_parsetree {
  48.  
  49.     /**
  50.      * Saved block nesting level
  51.      * @var int
  52.      */
  53.     public $saved_block_nesting;
  54.  
  55.     /**
  56.      * Create parse tree buffer for Smarty tag
  57.      *
  58.      * @param object $parser    parser object
  59.      * @param string $data      content
  60.      */
  61.     public function __construct($parser, $data)
  62.     {
  63.         $this->parser = $parser;
  64.         $this->data = $data;
  65.         $this->saved_block_nesting = $parser->block_nesting_level;
  66.     }
  67.  
  68.     /**
  69.      * Return buffer content
  70.      *
  71.      * @return string  content
  72.      */
  73.     public function to_smarty_php()
  74.     {
  75.         return $this->data;
  76.     }
  77.  
  78.     /**
  79.      * Return complied code that loads the evaluated outout of buffer content into a temporary variable
  80.      *
  81.      * @return string template code
  82.      */
  83.     public function assign_to_var()
  84.     {
  85.         $var = sprintf('$_tmp%d', ++$this->parser->prefix_number);
  86.         $this->parser->compiler->prefix_code[] = sprintf('<?php ob_start();?>%s<?php %s=ob_get_clean();?>', $this->data, $var);
  87.         return $var;
  88.     }
  89.  
  90. }
  91.  
  92. /**
  93.  * Code fragment inside a tag.
  94.  *
  95.  * @package Smarty
  96.  * @subpackage Compiler
  97.  * @ignore
  98.  */
  99. class _smarty_code extends _smarty_parsetree {
  100.  
  101.  
  102.     /**
  103.      * Create parse tree buffer for code fragment
  104.      *
  105.      * @param object $parser    parser object
  106.      * @param string $data      content
  107.      */
  108.     public function __construct($parser, $data)
  109.     {
  110.         $this->parser = $parser;
  111.         $this->data = $data;
  112.     }
  113.  
  114.     /**
  115.      * Return buffer content in parentheses
  116.      *
  117.      * @return string  content
  118.      */
  119.     public function to_smarty_php()
  120.     {
  121.         return sprintf("(%s)", $this->data);
  122.     }
  123.  
  124. }
  125.  
  126. /**
  127.  * Double quoted string inside a tag.
  128.  *
  129.  * @package Smarty
  130.  * @subpackage Compiler
  131.  * @ignore
  132.  */
  133. class _smarty_doublequoted extends _smarty_parsetree {
  134.  
  135.     /**
  136.      * Create parse tree buffer for double quoted string subtrees
  137.      *
  138.      * @param object $parser    parser object
  139.      * @param _smarty_parsetree $subtree    parsetree buffer
  140.      */
  141.     public function __construct($parser, _smarty_parsetree $subtree)
  142.     {
  143.         $this->parser = $parser;
  144.         $this->subtrees[] = $subtree;
  145.         if ($subtree instanceof _smarty_tag) {
  146.             $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
  147.         }
  148.     }
  149.  
  150.     /**
  151.      * Append buffer to subtree
  152.      *
  153.      * @param _smarty_parsetree $subtree  parsetree buffer
  154.      */
  155.     public function append_subtree(_smarty_parsetree $subtree)
  156.     {
  157.         $last_subtree = count($this->subtrees) - 1;
  158.         if ($last_subtree >= 0 && $this->subtrees[$last_subtree] instanceof _smarty_tag && $this->subtrees[$last_subtree]->saved_block_nesting < $this->parser->block_nesting_level) {
  159.             if ($subtree instanceof _smarty_code) {
  160.                 $this->subtrees[$last_subtree]->data .= '<?php echo ' . $subtree->data . ';?>';
  161.             } elseif ($subtree instanceof _smarty_dq_content) {
  162.                 $this->subtrees[$last_subtree]->data .= '<?php echo "' . $subtree->data . '";?>';
  163.             } else {
  164.                 $this->subtrees[$last_subtree]->data .= $subtree->data;
  165.             }
  166.         } else {
  167.             $this->subtrees[] = $subtree;
  168.         }
  169.         if ($subtree instanceof _smarty_tag) {
  170.             $this->parser->block_nesting_level = count($this->parser->compiler->_tag_stack);
  171.         }
  172.     }
  173.  
  174.     /**
  175.      * Merge subtree buffer content together
  176.      *
  177.      * @return string  compiled template code
  178.      */
  179.     public function to_smarty_php()
  180.     {
  181.         $code = '';
  182.         foreach ($this->subtrees as $subtree) {
  183.             if ($code !== "") {
  184.                 $code .= ".";
  185.             }
  186.             if ($subtree instanceof _smarty_tag) {
  187.                 $more_php = $subtree->assign_to_var();
  188.             } else {
  189.                 $more_php = $subtree->to_smarty_php();
  190.             }
  191.  
  192.             $code .= $more_php;
  193.  
  194.             if (!$subtree instanceof _smarty_dq_content) {
  195.                 $this->parser->compiler->has_variable_string = true;
  196.             }
  197.         }
  198.         return $code;
  199.     }
  200.  
  201. }
  202.  
  203. /**
  204.  * Raw chars as part of a double quoted string.
  205.  *
  206.  * @package Smarty
  207.  * @subpackage Compiler
  208.  * @ignore
  209.  */
  210. class _smarty_dq_content extends _smarty_parsetree {
  211.  
  212.  
  213.     /**
  214.      * Create parse tree buffer with string content
  215.      *
  216.      * @param object $parser  parser object
  217.      * @param string $data    string section
  218.      */
  219.     public function __construct($parser, $data)
  220.     {
  221.         $this->parser = $parser;
  222.         $this->data = $data;
  223.     }
  224.  
  225.     /**
  226.      * Return content as double quoted string
  227.      *
  228.      * @return string doubled quoted string
  229.      */
  230.     public function to_smarty_php()
  231.     {
  232.         return '"' . $this->data . '"';
  233.     }
  234.  
  235. }
  236.  
  237. /**
  238.  * Template element
  239.  *
  240.  * @package Smarty
  241.  * @subpackage Compiler
  242.  * @ignore
  243.  */
  244. class _smarty_template_buffer extends _smarty_parsetree {
  245.  
  246.     /**
  247.      * Array of template elements
  248.      *
  249.      * @var array
  250.      */
  251.     public $subtrees = Array();
  252.  
  253.     /**
  254.      * Create root of parse tree for template elements
  255.      *
  256.      * @param object $parser    parse object
  257.      */
  258.     public function __construct($parser)
  259.     {
  260.         $this->parser = $parser;
  261.     }
  262.  
  263.     /**
  264.      * Append buffer to subtree
  265.      *
  266.      * @param _smarty_parsetree $subtree
  267.      */
  268.     public function append_subtree(_smarty_parsetree $subtree)
  269.     {
  270.         $this->subtrees[] = $subtree;
  271.     }
  272.  
  273.     /**
  274.      * Sanitize and merge subtree buffers together
  275.      *
  276.      * @return string template code content
  277.      */
  278.     public function to_smarty_php()
  279.     {
  280.         $code = '';
  281.         for ($key = 0, $cnt = count($this->subtrees); $key < $cnt; $key++) {
  282.             if ($key + 2 < $cnt) {
  283.                 if ($this->subtrees[$key] instanceof _smarty_linebreak && $this->subtrees[$key + 1] instanceof _smarty_tag && $this->subtrees[$key + 1]->data == '' && $this->subtrees[$key + 2] instanceof _smarty_linebreak) {
  284.                     $key = $key + 1;
  285.                     continue;
  286.                 }
  287.                 if (substr($this->subtrees[$key]->data, -1) == '<' && $this->subtrees[$key + 1]->data == '' && substr($this->subtrees[$key + 2]->data, -1) == '?') {
  288.                     $key = $key + 2;
  289.                     continue;
  290.                 }
  291.             }
  292.             if (substr($code, -1) == '<') {
  293.                 $subtree = $this->subtrees[$key]->to_smarty_php();
  294.                 if (substr($subtree, 0, 1) == '?') {
  295.                     $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>?' . substr($subtree, 1);
  296.                 } elseif ($this->parser->asp_tags && substr($subtree, 0, 1) == '%') {
  297.                     $code = substr($code, 0, strlen($code) - 1) . '<<?php ?>%' . substr($subtree, 1);
  298.                 } else {
  299.                     $code .= $subtree;
  300.                 }
  301.                 continue;
  302.             }
  303.             if ($this->parser->asp_tags && substr($code, -1) == '%') {
  304.                 $subtree = $this->subtrees[$key]->to_smarty_php();
  305.                 if (substr($subtree, 0, 1) == '>') {
  306.                     $code = substr($code, 0, strlen($code) - 1) . '%<?php ?>>' . substr($subtree, 1);
  307.                 } else {
  308.                     $code .= $subtree;
  309.                 }
  310.                 continue;
  311.             }
  312.             if (substr($code, -1) == '?') {
  313.                 $subtree = $this->subtrees[$key]->to_smarty_php();
  314.                 if (substr($subtree, 0, 1) == '>') {
  315.                     $code = substr($code, 0, strlen($code) - 1) . '?<?php ?>>' . substr($subtree, 1);
  316.                 } else {
  317.                     $code .= $subtree;
  318.                 }
  319.                 continue;
  320.             }
  321.             $code .= $this->subtrees[$key]->to_smarty_php();
  322.         }
  323.         return $code;
  324.     }
  325.  
  326. }
  327.  
  328. /**
  329.  * template text
  330.  *
  331.  * @package Smarty
  332.  * @subpackage Compiler
  333.  * @ignore
  334.  */
  335. class _smarty_text extends _smarty_parsetree {
  336.  
  337.  
  338.     /**
  339.      * Create template text buffer
  340.      *
  341.      * @param object $parser    parser object
  342.      * @param string $data      text
  343.      */
  344.     public function __construct($parser, $data)
  345.     {
  346.         $this->parser = $parser;
  347.         $this->data = $data;
  348.     }
  349.  
  350.     /**
  351.      * Return buffer content
  352.      *
  353.      * @return strint text
  354.      */
  355.     public function to_smarty_php()
  356.     {
  357.         return $this->data;
  358.     }
  359.  
  360. }
  361.  
  362. /**
  363.  * template linebreaks
  364.  *
  365.  * @package Smarty
  366.  * @subpackage Compiler
  367.  * @ignore
  368.  */
  369. class _smarty_linebreak extends _smarty_parsetree {
  370.  
  371.     /**
  372.      * Create buffer with linebreak content
  373.      *
  374.      * @param object $parser    parser object
  375.      * @param string  $data     linebreak string
  376.      */
  377.     public function __construct($parser, $data)
  378.     {
  379.         $this->parser = $parser;
  380.         $this->data = $data;
  381.     }
  382.  
  383.     /**
  384.      * Return linebrak
  385.      *
  386.      * @return string linebreak
  387.      */
  388.     public function to_smarty_php()
  389.     {
  390.         return $this->data;
  391.     }
  392.  
  393. }
  394.  
  395. ?>
downloadsmarty_internal_parsetree.php Source code - Download The latest thinkphp v5.2 work order system Source code
Related Source Codes/Software:
V3.3.6 Workerman high-performance PHP Socket (framework) - High performance PHP Socket framework Workerman re... 2017-05-03
The phosphor meeting room reservation system MRBS (loop reservation v16.0) - The phosphor meeting room reservation system MRBS ... 2017-05-03
IDC v5.2.3 agent center - IDC Centre IDC for exploitation is a PHP+MySQL age... 2017-05-03
Zen master v9.0.1 project management software - Zen is the first domestic open source project mana... 2017-05-03
Ray speed v7.03 employee files management system - Employee files project is various, and some conten... 2017-05-03
HITCMS Haitian responsive electronic mechanical v3.0 foreign trade website source code - HITCMS Haitian response electronic machinery trade... 2017-05-03
Ray v7.02 speed survey system - Lightning speed survey system is a. NET+MSSQL deve... 2017-05-03
Cool HITCMS reactive black v3.0 enterprise website source code - HITCMS-Haitian response black enterprises website ... 2017-05-03
WebOA v17.2 network office automation system - WebOA network using b/s structure development of o... 2017-05-03
Pure imitation of han site source code, one a 】 【 c9cms kernel v1.0 - Generic http://www.wufazhuce.com/Han one · Config... 2017-05-04
zone.js - Implements Zones for JavaScript ... 2017-05-11
dragonfly - A Ruby gem for on-the-fly processing - suitable fo... 2017-05-11
oh-my-fish - The Fishshell Framework. 2017-05-11
canvas-lms - The open LMS by Instructure, Inc. 2017-05-11
ledger - Double-entry accounting system with a command-line... 2017-05-11
Python - My Python Examples http://w... 2017-05-11
blade - 2017-05-11
LaZagne - Credentials recovery project 2017-05-10
Pull-to-Refresh.Rentals-iOS - This project aims to provide a simple and customiz... 2017-05-10
spoon - Distributing instrumentation tests to all your And... 2017-05-10

 Back to top