Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F1142260
smarty_internal_smartytemplatecompiler.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
smarty_internal_smartytemplatecompiler.php
View Options
<?php
/**
* Smarty Internal Plugin Smarty Template Compiler Base
*
* This file contains the basic classes and methodes for compiling Smarty templates with lexer/parser
*
* @package Smarty
* @subpackage Compiler
* @author Uwe Tews
*/
/**
* @ignore
*/
include
(
"smarty_internal_parsetree.php"
);
/**
* Class SmartyTemplateCompiler
*
* @package Smarty
* @subpackage Compiler
*/
class
Smarty_Internal_SmartyTemplateCompiler
extends
Smarty_Internal_TemplateCompilerBase
{
/**
* Lexer class name
*
* @var string
*/
public
$lexer_class
;
/**
* Parser class name
*
* @var string
*/
public
$parser_class
;
/**
* Lexer object
*
* @var object
*/
public
$lex
;
/**
* Parser object
*
* @var object
*/
public
$parser
;
/**
* Smarty object
*
* @var object
*/
public
$smarty
;
/**
* array of vars which can be compiled in local scope
*
* @var array
*/
public
$local_var
=
array
();
/**
* Initialize compiler
*
* @param string $lexer_class class name
* @param string $parser_class class name
* @param Smarty $smarty global instance
*/
public
function
__construct
(
$lexer_class
,
$parser_class
,
$smarty
)
{
$this
->
smarty
=
$smarty
;
parent
::
__construct
();
// get required plugins
$this
->
lexer_class
=
$lexer_class
;
$this
->
parser_class
=
$parser_class
;
}
/**
* Methode to compile a Smarty template
*
* @param mixed $_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
(
$this
->
smarty
->
_parserdebug
)
$this
->
parser
->
PrintTrace
();
// get tokens from lexer and parse them
while
(
$this
->
lex
->
yylex
()
&&
!
$this
->
abort_and_recompile
)
{
if
(
$this
->
smarty
->
_parserdebug
)
{
echo
"<pre>Line {$this->lex->line} Parsing {$this->parser->yyTokenName[$this->lex->token]} Token "
.
htmlentities
(
$this
->
lex
->
value
)
.
"</pre>"
;
}
$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
(
$openTag
,
$_data
)
=
array_pop
(
$this
->
_tag_stack
);
$this
->
trigger_template_error
(
"unclosed {"
.
$openTag
.
"} tag"
);
}
// return compiled code
// return str_replace(array("? >\n<?php","? ><?php"), array('',''), $this->parser->retvalue);
return
$this
->
parser
->
retvalue
;
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Aug 2, 23:38 (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25975
Default Alt Text
smarty_internal_smartytemplatecompiler.php (3 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment