[Petal] Patch Idea
Jonathan Vanasco
jon at 2xlp.com
Wed Aug 16 21:34:17 BST 2006
On Aug 16, 2006, at 4:06 PM, Corey wrote:
>
> A while back I asked whether it would be possible to get Petal to
> iterate ('petal:repeat') through hashes because I hated having
> to convert all my data structures in my classes, which are usually
> hashes, into arrays just so I could feed them to petal.... is this
> essentially what your provided code does?
>
> If so -- killer! I think it would be especially useful.
sorry, but no. it just has to do with the way perl treats hashes and
named arguments, and how
a)
$template->process( a=> 'z' );
my %Personalized= ( 'a' => 'z' );
b)
$template->process( %Personalized );
c)
$template->process( \%Personalized );
d)
$template->process( {'a' => 'z'} );
on c, process gets ( $self , $ref__Personalized );
on d, process gets ( $self , $ref__toThatAnonHash );
on a & b , process gets ( $self , 'a' , 'z' );
if you're doing some sort of template class / plugin / or wrapper
where Petal is an option, adding that just lets you do
my $self= shift;
my $args= shift;
and you can pass in args as an array ref, without coercing it into a
hash or exploding the array
there's no immediate performance difference, as petal processes the
array ref and array the same way, with no memory or opcode gain
but, it means that you save doing
process( @$args ) in your class, instead of just process( $args ),
which is kind of confusing
you still don't need to convert hashes into arrays for petal-- just
make an iterator class or something. have petal print out a function
to the iterator that loops through an array and pulls out the index
you want.
More information about the Petal
mailing list