X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom.pm;h=f540ec21e6081c567f50d7b5eb12df9da1a7e2e8;hb=a5d7c5f6c5f683b801fda481884ee33892683b30;hp=07378b471faf46561ce787cfe48e374c2b5bb317;hpb=2daa653a58384970b813ea933d125c4a88dad853;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom.pm b/lib/HTML/Zoom.pm index 07378b4..f540ec2 100644 --- a/lib/HTML/Zoom.pm +++ b/lib/HTML/Zoom.pm @@ -1,12 +1,16 @@ package HTML::Zoom; -use strict; -use warnings FATAL => 'all'; +use strictures 1; use HTML::Zoom::ZConfig; use HTML::Zoom::ReadFH; use HTML::Zoom::Transform; use HTML::Zoom::TransformBuilder; +use Scalar::Util (); + +our $VERSION = '0.009006'; + +$VERSION = eval $VERSION; sub new { my ($class, $args) = @_; @@ -74,6 +78,17 @@ sub apply { $self->$code; } +sub apply_if { + my ($self, $predicate, $code) = @_; + if($predicate) { + local $_ = $self; + $self->$code; + } + else { + $self; + } +} + sub to_html { my $self = shift; $self->zconfig->producer->html_from_stream($self->to_stream); @@ -135,6 +150,20 @@ sub then { $self->select($self->{transforms}->[-1]->selector); } +sub AUTOLOAD { + my ($self, $selector, @args) = @_; + my $sel = $self->select($selector); + my $meth = our $AUTOLOAD; + $meth =~ s/.*:://; + 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 @@ -703,13 +732,42 @@ together; the intermediary object isn't designed or expected to stick around. Re-runs the previous select to allow you to chain actions together on the same selector. -=head1 AUTHORS +=head1 AUTOLOAD METHODS -=over +L AUTOLOADS methods against L so that you can reduce a +certain amount of boilerplate typing. This allows you to replace: -=item * Matt S. Trout + $z->select('div')->replace_content("Hello World"); + +With: -=back + $z->replace_content(div => "Hello World"); + +Besides saving a few keys per invocations, you may feel this looks neater +in your code and increases understanding. + +=head1 AUTHOR + +mst - Matt S. Trout (cpan:MSTROUT) + +=head1 CONTRIBUTORS + +Oliver Charles + +Jakub Nareski + +Simon Elliot + +Joe Highton + +John Napiorkowski + +Robert Buels + +=head1 COPYRIGHT + +Copyright (c) 2010-2011 the HTML::Zoom L and L +as listed above. =head1 LICENSE