mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-04 18:34:27 +02:00
Added ability to use simple variables for array indices or object properties.
This commit is contained in:
2
NEWS
2
NEWS
@@ -1,3 +1,5 @@
|
||||
- added ability to use simple variables as array indices or
|
||||
object properties. (Andrei)
|
||||
- added ability to unregister pre/postfilters plugins at
|
||||
runtime. (Andrei)
|
||||
- added 'htmlall' attribute to escape modifier. (Monte)
|
||||
|
@@ -239,7 +239,7 @@ class Smarty_Compiler extends Smarty {
|
||||
|
||||
/* If the tag name matches a variable or section property definition,
|
||||
we simply process it. */
|
||||
if (preg_match('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // if a variable
|
||||
if (preg_match('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // if a variable
|
||||
preg_match('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // or a configuration variable
|
||||
preg_match('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command)) { // or a section property
|
||||
settype($tag_command, 'array');
|
||||
@@ -1085,7 +1085,7 @@ class Smarty_Compiler extends Smarty {
|
||||
{
|
||||
$qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'';
|
||||
|
||||
$var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$conf_var_exprs = preg_grep('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$sect_prop_exprs = preg_grep('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
|
||||
@@ -1119,7 +1119,7 @@ class Smarty_Compiler extends Smarty {
|
||||
$var_ref = $parts[0];
|
||||
$modifiers = isset($parts[1]) ? $parts[1] : '';
|
||||
|
||||
preg_match_all('!\[\w+(\.\w+)?\]|(->|\.)\w+|^\w+!', $var_ref, $match);
|
||||
preg_match_all('!\[\w+(\.\w+)?\]|(->|\.)\$?\w+|^\w+!', $var_ref, $match);
|
||||
$indexes = $match[0];
|
||||
$var_name = array_shift($indexes);
|
||||
|
||||
@@ -1152,7 +1152,10 @@ class Smarty_Compiler extends Smarty {
|
||||
$output .= "[\$this->_sections['$section']['$section_prop']]";
|
||||
}
|
||||
} else if ($index{0} == '.') {
|
||||
$output .= "['" . substr($index, 1) . "']";
|
||||
if ($index{1} == '$')
|
||||
$output .= "[\$this->_tpl_vars['" . substr($index, 2) . "']]";
|
||||
else
|
||||
$output .= "['" . substr($index, 1) . "']";
|
||||
} else {
|
||||
$output .= $index;
|
||||
}
|
||||
|
@@ -239,7 +239,7 @@ class Smarty_Compiler extends Smarty {
|
||||
|
||||
/* If the tag name matches a variable or section property definition,
|
||||
we simply process it. */
|
||||
if (preg_match('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // if a variable
|
||||
if (preg_match('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // if a variable
|
||||
preg_match('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command) || // or a configuration variable
|
||||
preg_match('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tag_command)) { // or a section property
|
||||
settype($tag_command, 'array');
|
||||
@@ -1085,7 +1085,7 @@ class Smarty_Compiler extends Smarty {
|
||||
{
|
||||
$qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"|\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\'';
|
||||
|
||||
$var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$var_exprs = preg_grep('!^\$\w+(?>(\[(\d+|\w+(\.\w+)?)\])|((\.|->)\$?\w+))*(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$conf_var_exprs = preg_grep('!^#(\w+)#(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
$sect_prop_exprs = preg_grep('!^%\w+\.\w+%(?>\|@?\w+(:(?>' . $qstr_regexp . '|[^|]+))*)*$!', $tokens);
|
||||
|
||||
@@ -1119,7 +1119,7 @@ class Smarty_Compiler extends Smarty {
|
||||
$var_ref = $parts[0];
|
||||
$modifiers = isset($parts[1]) ? $parts[1] : '';
|
||||
|
||||
preg_match_all('!\[\w+(\.\w+)?\]|(->|\.)\w+|^\w+!', $var_ref, $match);
|
||||
preg_match_all('!\[\w+(\.\w+)?\]|(->|\.)\$?\w+|^\w+!', $var_ref, $match);
|
||||
$indexes = $match[0];
|
||||
$var_name = array_shift($indexes);
|
||||
|
||||
@@ -1152,7 +1152,10 @@ class Smarty_Compiler extends Smarty {
|
||||
$output .= "[\$this->_sections['$section']['$section_prop']]";
|
||||
}
|
||||
} else if ($index{0} == '.') {
|
||||
$output .= "['" . substr($index, 1) . "']";
|
||||
if ($index{1} == '$')
|
||||
$output .= "[\$this->_tpl_vars['" . substr($index, 2) . "']]";
|
||||
else
|
||||
$output .= "['" . substr($index, 1) . "']";
|
||||
} else {
|
||||
$output .= $index;
|
||||
}
|
||||
|
Reference in New Issue
Block a user