X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom.pm;h=63774b369ed7fce4a0262ed556f251ccd28316e3;hb=268f2c3599c9e7bd07e0d2087926bb160d86f82e;hp=4f1c599a668caac102f8b5df67a49fb5181c77d7;hpb=f107bef7116776c3a4cae3fa3ca8e0670037c4d7;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom.pm b/lib/HTML/Zoom.pm index 4f1c599..63774b3 100644 --- a/lib/HTML/Zoom.pm +++ b/lib/HTML/Zoom.pm @@ -6,8 +6,9 @@ use HTML::Zoom::ZConfig; use HTML::Zoom::ReadFH; use HTML::Zoom::Transform; use HTML::Zoom::TransformBuilder; +use Scalar::Util (); -our $VERSION = '0.009004'; +our $VERSION = '0.009005'; $VERSION = eval $VERSION; @@ -149,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 @@ -717,6 +732,20 @@ 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 AUTOLOAD METHODS + +L AUTOLOADS methods against L so that you can reduce a +certain amount of boilerplate typing. This allows you to replace: + + $z->select('div')->replace_content("Hello World"); + +With: + + $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) @@ -733,6 +762,8 @@ Joe Highton John Napiorkowski +Robert Buels + =head1 COPYRIGHT Copyright (c) 2010-2011 the HTML::Zoom L and L