Support for hashref in AUTOLOADed methods i.e
[catagits/HTML-Zoom.git] / lib / HTML / Zoom.pm
index 63774b3..8de1952 100644 (file)
@@ -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,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')";
@@ -632,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;
@@ -680,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;
@@ -756,7 +782,7 @@ Oliver Charles
 
 Jakub Nareski
 
-Simon Elliot
+Simon Elliott
 
 Joe Highton
 
@@ -764,6 +790,8 @@ John Napiorkowski
 
 Robert Buels
 
+David Dorward
+
 =head1 COPYRIGHT
 
 Copyright (c) 2010-2011 the HTML::Zoom L</AUTHOR> and L</CONTRIBUTORS>