[ic] Bug in "EITHER" coretag
Kevin Walsh
kevin at cursor.biz
Fri Mar 9 20:13:00 EST 2007
Carl Bailey <carl at triangleresearch.com> 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. Further, it's not hard to picture a scenario where
> NOT trimming space characters would be desired.
>
> We therefore propose, for your consideration, the following replacement
> to the tag, which adds a "notrim" option, and corrects the return
> problem as well. We have used this tag successfully in our IC 5.2
> environment:
>
> UserTag either Order notrim
> UserTag either hasEndTag
> UserTag either PosNumber 0
> UserTag either Version $Revision: 1.3.1 $
> UserTag either Routine <<EOR
> sub {
> my ($notrim, $body) = @_;
> my @ary = split /\[or\]/, $body;
> my $result;
> while(@ary) {
> $result = interpolate_html(shift @ary);
> unless ($notrim) {
> $result =~ s/^\s+//;
> $result =~ s/\s+$//;
> }
> return $result if length($result);
> }
> return;
> }
> EOR
>
> Usage Example:
> [seti delimiter][either notrim=1][scratch user_delim][or]
> [/either][/seti]
>
>
> Regards,
>
> Carl Bailey
> Triangle Research, Inc.
>
> _______________________________________________
> interchange-users mailing list
> interchange-users at icdevgroup.org
> http://www.icdevgroup.org/mailman/listinfo/interchange-users
>
>
--
_/ _/ _/_/_/_/ _/ _/ _/_/_/ _/ _/
_/_/_/ _/_/ _/ _/ _/ _/_/ _/ K e v i n W a l s h
_/ _/ _/ _/ _/ _/ _/ _/_/ kevin at cursor.biz
_/ _/ _/_/_/_/ _/ _/_/_/ _/ _/
More information about the interchange-users
mailing list