make then() work on streams and fix up replace_content on in_place_close elements
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / TransformBuilder.pm
CommitLineData
eeeb0921 1package HTML::Zoom::TransformBuilder;
2
3use strict;
4use warnings FATAL => 'all';
5use base qw(HTML::Zoom::SubObject);
a88c1c57 6use HTML::Zoom::Transform;
eeeb0921 7
8sub new {
9 my ($class, $args) = @_;
10 my $new = $class->SUPER::new($args);
11 $new->{transform} =
12 $args->{transform}
13 || HTML::Zoom::Transform->new({
14 zconfig => $new->{_zconfig},
15 selector => $args->{selector},
16 filters => [],
17 });
18 $new->{proto} = $args->{proto};
19 $new
20}
21
22sub DESTROY {}
23
24sub AUTOLOAD {
25 my $meth = our $AUTOLOAD;
26 $meth =~ s/.*:://;
27 my $self = shift;
28 my $fb = $self->_zconfig->filter_builder;
29 if (my $cr = $fb->can($meth)) {
30 return $self->{proto}->with_transform(
31 $self->{transform}->with_filter($fb->$cr(@_))
32 );
33 }
34 die "Filter builder $fb does not provide action ${meth}";
35}
36
371;