X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom.pm;h=8de1952c5e81c47286c5afd2621fae41ba6815fb;hb=6dc05a36124ed607d23e19f2969ca5ab308bce5f;hp=baeec156e97ec1f4d0ef0f25da6ec791cd3294ad;hpb=60d640ca9fbc328f7badc380a38f46e5414b6bf2;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom.pm b/lib/HTML/Zoom.pm index baeec15..8de1952 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.009005'; +our $VERSION = '0.009006'; $VERSION = eval $VERSION; @@ -155,13 +155,27 @@ 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')"; } } +sub DESTROY {} + 1; =head1 NAME @@ -630,6 +644,12 @@ zoom instance with that as the source HTML to be transformed. Convenience method - slurps the contents of $file and calls from_html with it. +=head2 from_events + + my $zoom = HTML::Zoom->from_events($evt); + +Create a new Zoom object from collected events + =head2 to_stream my $stream = $zoom->to_stream; @@ -678,6 +698,14 @@ sugar, the following is entirely equivalent: my $z2 = $sub->($z1); +=head2 apply_if + + my $z2 = $z1->apply_if($cond, sub { + $_->select('div')->replace_content('I AM A DIV!') }) + }); + +->apply but will only run the tranform if $cond is true + =head2 to_html my $html = $zoom->to_html; @@ -754,7 +782,7 @@ Oliver Charles Jakub Nareski -Simon Elliot +Simon Elliott Joe Highton @@ -762,6 +790,8 @@ John Napiorkowski Robert Buels +David Dorward + =head1 COPYRIGHT Copyright (c) 2010-2011 the HTML::Zoom L and L