Re: [SMARTY-DEV] Numeric modifier parameters

From: Date: Sun, 29 Feb 2004 11:22:44 +0000
Subject: Re: [SMARTY-DEV] Numeric modifier parameters
References: 1  Groups: php.smarty.dev 
Request: Send a blank email to php-smarty-dev+get-2164@lists.php.net to get a copy of this message
On Thu, Feb 26, 2004 at 05:12:26PM -0000, Mark Rogers wrote: > I just created a simple modifier "scale_number" which I use thus: > {$data|scale_number:4:-10:20:50} > > The idea was to scale a value between 4 and 20 to one between -10 and 50. > > In doing so I discover that this fools Smarty (2.6.0) because of the - sign. > I suspect it is being seen as a calculation: > ($data|scale_number:4:) - (10:20:50) > > Is this behaviour correct/desirable? I got a bit lost trying to see how it > would be fixed - guess I don't know the compiler well enough. > > It is possible to work around this with > {$data|scale_number:4:"-10":20:50} > .. but this is not intuitive. Hmm, I cannot reproduce that, It works fine for me with 2.6.0 and latest (2.6.2). > Note that "." also fools Smarty in a similar way: > {$data|scale_number:4:10.5:20:50} But i can reproduce that. I propose the following fix for it: Index: Smarty_Compiler.class.php =================================================================== RCS file: /repository/smarty/libs/Smarty_Compiler.class.php,v retrieving revision 1.315 diff -u -r1.315 Smarty_Compiler.class.php --- Smarty_Compiler.class.php 23 Feb 2004 23:14:40 -0000 1.315 +++ Smarty_Compiler.class.php 29 Feb 2004 11:20:25 -0000 @@ -157,7 +157,7 @@ // |foo:"bar":$foobar // |foo|bar // |foo:$foo->bar - $this->_mod_regexp = '(?:\|@?\w+(?::(?>-?\w+|' + $this->_mod_regexp = '(?:\|@?\w+(?::(?>-?\d+(?:\.\d+)?|\w+|' . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)'; // matches valid function name: If nobody sees a problem with this change, I'll commit it. Greetings messju > -- > Mark Rogers, > More Solutions Ltd

« previous php.smarty.dev (#2164) next »