[ic] Bug in "EITHER" coretag

Stefan Hornburg (Racke) racke at linuxia.de
Fri Mar 9 18:17:07 EST 2007


Peter wrote:
> 
> On 03/09/2007 11:26 AM, Stefan Hornburg wrote:
>> Carl Bailey wrote:
>>> We found what we believe to be a fault in the [either] coretag.
>>>
>>> We used the following code on a page:
>>>    [either][cgi idxnum][or]0[/either]
>>> When the cgi value is absent this tag returns nothing -- a null
>>> string, rather than the desired '0' character.
>>>
>>> The reason for this is that the either coretag splits its body on
>>> "[or]" and interpolates each chunk in turn, removes leading and
>>> trailing spaces from the result and returns the first "true" result. 
>>> However in determining what to return, it uses the statement "return
>>> $result if $result;"  Obviously when $result = '0', this fails to
>>> return anything.  
>> Therefore the last statement in the tag should be:
>>
>> return $result if $result =~ /\S/;
> 
> So what if the first result is "0"?  it would still return it.

I said the last statement in the tag, not the return within the loop.

> 
> And I don't think this addresses the problem that was originally stated
> either.
> 
> return $result if $result is the right way to do it, but there needs to
> be a way to return the last result in the loop if all tests fail.

See above.

Regards
	Racke


-- 
LinuXia Systems => http://www.linuxia.de/
Expert Interchange Consulting and System Administration
ICDEVGROUP => http://www.icdevgroup.org/
Interchange Development Team



More information about the interchange-users mailing list