summaryrefslogtreecommitdiff
path: root/libs/sysplugins/smarty_internal_config_file_compiler.php
diff options
context:
space:
mode:
Diffstat (limited to 'libs/sysplugins/smarty_internal_config_file_compiler.php')
-rw-r--r--libs/sysplugins/smarty_internal_config_file_compiler.php110
1 files changed, 74 insertions, 36 deletions
diff --git a/libs/sysplugins/smarty_internal_config_file_compiler.php b/libs/sysplugins/smarty_internal_config_file_compiler.php
index e9dfbdb0..b16a6940 100644
--- a/libs/sysplugins/smarty_internal_config_file_compiler.php
+++ b/libs/sysplugins/smarty_internal_config_file_compiler.php
@@ -1,86 +1,123 @@
<?php
-
/**
* Smarty Internal Plugin Config File Compiler
- *
+ *
* This is the config file compiler class. It calls the lexer and parser to
* perform the compiling.
- *
+ *
* @package Smarty
* @subpackage Config
- * @author Uwe Tews
+ * @author Uwe Tews
*/
-
+
/**
* Main config file compiler class
+ *
+ * @package Smarty
+ * @subpackage Config
*/
class Smarty_Internal_Config_File_Compiler {
+
+ /**
+ * Lexer object
+ *
+ * @var object
+ */
+ public $lex;
+
+ /**
+ * Parser object
+ *
+ * @var object
+ */
+ public $parser;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty object
+ */
+ public $smarty;
+
+ /**
+ * Smarty object
+ *
+ * @var Smarty_Internal_Config object
+ */
+ public $config;
+
+ /**
+ * Compiled config data sections and variables
+ *
+ * @var array
+ */
+ public $config_data = array();
+
/**
* Initialize compiler
+ *
+ * @param Smarty $smarty base instance
*/
public function __construct($smarty)
{
- $this->smarty = $smarty;
- // get required plugins
- $this->smarty->loadPlugin('Smarty_Internal_Configfilelexer');
- $this->smarty->loadPlugin('Smarty_Internal_Configfileparser');
+ $this->smarty = $smarty;
$this->config_data['sections'] = array();
$this->config_data['vars'] = array();
- }
+ }
/**
- * Methode to compile a Smarty template
- *
- * @param $template template object to compile
+ * Method to compile a Smarty template.
+ *
+ * @param Smarty_Internal_Config $config config object
* @return bool true if compiling succeeded, false if it failed
*/
- public function compileSource($config)
+ public function compileSource(Smarty_Internal_Config $config)
{
/* here is where the compiling takes place. Smarty
- tags in the templates are replaces with PHP code,
- then written to compiled files. */
- $this->config = $config;
+ tags in the templates are replaces with PHP code,
+ then written to compiled files. */
+ $this->config = $config;
// get config file source
- $_content = $config->getConfigSource() . "\n";
+ $_content = $config->source->content . "\n";
// on empty template just return
if ($_content == '') {
return true;
- }
+ }
// init the lexer/parser to compile the config file
$lex = new Smarty_Internal_Configfilelexer($_content, $this->smarty);
$parser = new Smarty_Internal_Configfileparser($lex, $this);
- if (isset($this->smarty->_parserdebug)) $parser->PrintTrace();
+ if ($this->smarty->_parserdebug) $parser->PrintTrace();
// get tokens from lexer and parse them
while ($lex->yylex()) {
- if (isset($this->smarty->_parserdebug)) echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
+ if ($this->smarty->_parserdebug) echo "<br>Parsing {$parser->yyTokenName[$lex->token]} Token {$lex->value} Line {$lex->line} \n";
$parser->doParse($lex->token, $lex->value);
- }
+ }
// finish parsing process
$parser->doParse(0, 0);
$config->compiled_config = '<?php $_config_vars = ' . var_export($this->config_data, true) . '; ?>';
- }
+ }
+
/**
* display compiler error messages without dying
- *
+ *
* If parameter $args is empty it is a parser detected syntax error.
* In this case the parser is called to obtain information about exspected tokens.
- *
+ *
* If parameter $args contains a string this is used as error message
- *
- * @todo output exact position of parse error in source line
- * @param $args string individual error message or null
+ *
+ * @param string $args individual error message or null
*/
public function trigger_config_file_error($args = null)
{
$this->lex = Smarty_Internal_Configfilelexer::instance();
- $this->parser = Smarty_Internal_Configfileparser::instance();
+ $this->parser = Smarty_Internal_Configfileparser::instance();
// get template source line which has error
$line = $this->lex->line;
if (isset($args)) {
// $line--;
- }
+ }
$match = preg_split("/\n/", $this->lex->data);
- $error_text = "Syntax error in config file '{$this->config->getConfigFilepath()}' on line {$line} '{$match[$line-1]}' ";
+ $error_text = "Syntax error in config file '{$this->config->source->filepath}' on line {$line} '{$match[$line-1]}' ";
if (isset($args)) {
// individual error message
$error_text .= $args;
@@ -94,13 +131,14 @@ class Smarty_Internal_Config_File_Compiler {
} else {
// otherwise internal token name
$expect[] = $this->parser->yyTokenName[$token];
- }
- }
+ }
+ }
// output parser error message
$error_text .= ' - Unexpected "' . $this->lex->value . '", expected one of: ' . implode(' , ', $expect);
- }
+ }
throw new SmartyCompilerException($error_text);
- }
-}
+ }
+
+}
?> \ No newline at end of file