From 397714a96ca25dc3eb398c4eb8f1e800b0f574b3 Mon Sep 17 00:00:00 2001 From: messju Date: Fri, 16 Apr 2004 08:34:39 +0000 Subject: [PATCH] enabled numerical constants be parsed as statements. (like {10} or {10|@range:12} ) --- libs/Smarty_Compiler.class.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/libs/Smarty_Compiler.class.php b/libs/Smarty_Compiler.class.php index 014fb377..3a3e6095 100644 --- a/libs/Smarty_Compiler.class.php +++ b/libs/Smarty_Compiler.class.php @@ -105,6 +105,8 @@ class Smarty_Compiler extends Smarty { // $foo[$bar] // $foo[5][blah] // $foo[5].bar[$foobar][4] + $this->_num_const_regexp = '\-?\d+(?:\.\d+)?'; + $this->_dvar_math_regexp = '[\+\-\*\/\%]'; $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]'; $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp @@ -131,7 +133,7 @@ class Smarty_Compiler extends Smarty { // #foo# // "text" // "text" - $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')'; + $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_num_const_regexp . '|' . $this->_qstr_regexp . ')'; // matches valid object call (no objects allowed in parameters): // $foo->bar @@ -1589,6 +1591,14 @@ class Smarty_Compiler extends Smarty { } return $return; } + elseif(preg_match('!^' . $this->_num_const_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) { + // numerical constant + preg_match('!^(' . $this->_num_const_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match); + if($match[2] != '') { + $this->_parse_modifiers($match[1], $match[2]); + return $match[1]; + } + } elseif(preg_match('!^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$!', $val)) { // single quoted text preg_match('!^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$!', $val, $match);