fix bug where first event isn't passed to filter during collect w/out inside
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / TransformBuilder.pm
1 package HTML::Zoom::TransformBuilder;
2
3 use strictures 1;
4 use base qw(HTML::Zoom::SubObject);
5 use HTML::Zoom::Transform;
6
7 sub new {
8   my ($class, $args) = @_;
9   my $new = $class->SUPER::new($args);
10   $new->{transform} =
11     $args->{transform}
12     || HTML::Zoom::Transform->new({
13          zconfig => $new->{_zconfig},
14          selector => $args->{selector},
15          filters => [],
16        });
17   $new->{proto} = $args->{proto};
18   $new
19 }
20
21 sub DESTROY {}
22
23 sub AUTOLOAD {
24   my $meth = our $AUTOLOAD;
25   $meth =~ s/.*:://;
26   my $self = shift;
27   my $fb = $self->_zconfig->filter_builder;
28   if (my $cr = $fb->can($meth)) {
29     return $self->{proto}->with_transform(
30       $self->{transform}->with_filter($fb->$cr(@_))
31     );
32   }
33   die "Filter builder $fb does not provide action ${meth}";
34 }
35
36 1;