X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FHTML-Zoom.git;a=blobdiff_plain;f=lib%2FHTML%2FZoom.pm;h=ce0df572feb03f667c7968c5ed587979d53e2163;hp=df4d3a03a431b67265fe7c027d43945b4d8a67c4;hb=9d554d62af2ba16997f6f47f23ef0674ac50e5c5;hpb=3959a04df063aa348d761eb916685ef5168b0e74 diff --git a/lib/HTML/Zoom.pm b/lib/HTML/Zoom.pm index df4d3a0..ce0df57 100644 --- a/lib/HTML/Zoom.pm +++ b/lib/HTML/Zoom.pm @@ -8,7 +8,7 @@ use HTML::Zoom::Transform; use HTML::Zoom::TransformBuilder; use Scalar::Util (); -our $VERSION = '0.009006'; +our $VERSION = '0.009008'; $VERSION = eval $VERSION; @@ -155,7 +155,19 @@ sub AUTOLOAD { my $sel = $self->select($selector); my $meth = our $AUTOLOAD; $meth =~ s/.*:://; - if(my $cr = $sel->_zconfig->filter_builder->can($meth)) { + if (ref($selector) eq 'HASH') { + my $ret = $self; + $ret = $ret->_do($_, $meth, @{$selector->{$_}}) for keys %$selector; + $ret; + } else { + $self->_do($selector, $meth, @args); + } +} + +sub _do { + my ($self, $selector, $meth, @args) = @_; + my $sel = $self->select($selector); + if( my $cr = $sel->_zconfig->filter_builder->can($meth)) { return $sel->$meth(@args); } else { die "We can't do $meth on ->select('$selector')"; @@ -201,13 +213,14 @@ HTML::Zoom - selector based streaming template engine $_->select('.name')->replace_content('Matt') ->select('.age')->replace_content('26') }, + # alternate form sub { - $_->select('.name')->replace_content('Mark') - ->select('.age')->replace_content('0x29') + $_->replace_content({'.name' => ['Mark'],'.age' => ['0x29'] }) }, + #alternate alternate form sub { - $_->select('.name')->replace_content('Epitaph') - ->select('.age')->replace_content('') + $_->replace_content('.name' => 'Epitaph') + ->replace_content('.age' => '') }, ], { repeat_between => '.between' } @@ -330,14 +343,12 @@ cleanly: ->add_to_attribute( for => $field->{id} ) ->then ->replace_content( $field->{label} ) - - ->select('input') - ->add_to_attribute( name => $field->{name} ) - ->then - ->add_to_attribute( type => $field->{type} ) - ->then - ->add_to_attribute( value => $field->{value} ) - + ->add_to_attribute( + input => { + name => $field->{name}, + type => $field->{type}, + value => $field->{value} + }) } } @fields ]); @@ -770,7 +781,7 @@ Oliver Charles Jakub Nareski -Simon Elliot +Simon Elliott Joe Highton @@ -778,6 +789,8 @@ John Napiorkowski Robert Buels +David Dorward + =head1 COPYRIGHT Copyright (c) 2010-2011 the HTML::Zoom L and L