X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/timetracker.git/blobdiff_plain/098a79f0819ebb89b7d48df4a6b154af4560f68e..9a23a8c0a51b7ec38a96f525484134f3cb85dc7e:/WEB-INF/lib/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php diff --git a/WEB-INF/lib/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php b/WEB-INF/lib/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php new file mode 100644 index 00000000..dcc89c67 --- /dev/null +++ b/WEB-INF/lib/smarty/sysplugins/smarty_internal_smartytemplatecompiler.php @@ -0,0 +1,72 @@ +smarty = $smarty; + parent::__construct(); + // get required plugins + $this->lexer_class = $lexer_class; + $this->parser_class = $parser_class; + } + + /** + * Methode to compile a Smarty template + * + * @param $_content template source + * @return bool true if compiling succeeded, false if it failed + */ + protected function doCompile($_content) + { + /* here is where the compiling takes place. Smarty + tags in the templates are replaces with PHP code, + then written to compiled files. */ + // init the lexer/parser to compile the template + $this->lex = new $this->lexer_class($_content, $this); + $this->parser = new $this->parser_class($this->lex, $this); + if (isset($this->smarty->_parserdebug)) $this->parser->PrintTrace(); + // get tokens from lexer and parse them + while ($this->lex->yylex() && !$this->abort_and_recompile) { + if (isset($this->smarty->_parserdebug)) echo "
Line {$this->lex->line} Parsing  {$this->parser->yyTokenName[$this->lex->token]} Token " . htmlentities($this->lex->value) . "
"; + $this->parser->doParse($this->lex->token, $this->lex->value); + } + + if ($this->abort_and_recompile) { + // exit here on abort + return false; + } + // finish parsing process + $this->parser->doParse(0, 0); + // check for unclosed tags + if (count($this->_tag_stack) > 0) { + // get stacked info + list($_open_tag, $_data) = array_pop($this->_tag_stack); + $this->trigger_template_error("unclosed {" . $_open_tag . "} tag"); + } + // return compiled code + // return str_replace(array("? >\nparser->retvalue); + return $this->parser->retvalue; + } +} + +?> \ No newline at end of file