[ic] delimiter for tag parameters
Peter
peter at pajamian.dhs.org
Thu Oct 27 08:58:35 EDT 2005
On 10/26/2005 11:12 PM, Kevin Walsh wrote:
> UserTag mytag Order title description
> UserTag mytag Routine <<EOR
> sub {
> my ($title,$description) = @_;
>
> ...
> }
> EOR
Or (untested, but should work) ...
UserTag mytag Routine <<EOR
sub {
my ($opt) = @_;
my ($title,$description) = @{$Scratch}{@{$opt}{'title','description'}};
}
EOR
Which, to explain the above, dereferences $opt into a hash, then
produces an array slice from the hash elements corresponding to the
title and description keys, then dereferences $Scratch into a hash and
produces an array slice from it using the above array as the keys.
Note that this will fail miserably if you fail to pass either title or
description attributes to the tag, or if they don't match a
corresponding scratch variable.
To be honest (and for my 2 cents) I tend to like Kevin's workaround of
using [mytag title="[scratch title]"] the best for the following reasons...
1) You can use that workaround on other existing tags without having to
modify the tag itself.
2) You can still call your own tag with [mytag title="My title"] from
other places without having to set the title in a scratch.
3) It's really not that much less efficient than the other methods
mentioned to be worth it (imo). To me, the most inefficient operations
are database and file accesses and that workaround doesn't require any
more of either one.
Peter
More information about the interchange-users
mailing list