add DESTROY methods to fix 5.14 noticing them being missing.
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / StreamBase.pm
index 6c0b416..1293458 100644 (file)
@@ -1,7 +1,6 @@
 package HTML::Zoom::StreamBase;
 
-use strict;
-use warnings FATAL => 'all';
+use strictures 1;
 use HTML::Zoom::TransformBuilder;
 
 sub _zconfig { shift->{_zconfig} }
@@ -83,9 +82,41 @@ sub apply {
   $self->$code;
 }
 
+sub apply_if {
+  my ($self, $predicate, $code) = @_;
+  if($predicate) {
+    local $_ = $self;
+    $self->$code;
+  }
+  else {
+    $self;
+  }
+}
+
 sub to_html {
   my ($self) = @_;
   $self->_zconfig->producer->html_from_stream($self);
 }
 
+sub AUTOLOAD {
+  my ($self, $selector, @args) = @_;
+  my $sel = $self->select($selector);
+  my $meth = our $AUTOLOAD;
+  $meth =~ s/.*:://;
+  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) = @_;
+  return $self->select($selector)->$meth(@args);
+}
+
+sub DESTROY {}
+
 1;