b604c2d2306cf65d64a015b04819cbc969d0bf73
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / Transform.pm
1 package HTML::Zoom::Transform;
2
3 use strict;
4 use warnings FATAL => 'all';
5 use base qw(HTML::Zoom::SubObject);
6
7 sub new {
8   my ($class, $args) = @_;
9   my $new = $class->SUPER::new($args);
10   $new->{selector} = $args->{selector};
11   $new->{filters} = $args->{filters}||[];
12   $new;
13 }
14
15 sub selector { shift->{selector} }
16
17 sub filters { shift->{filters} }
18
19 sub with_filter {
20   my ($self, $filter) = @_;
21   (ref $self)->new({
22     selector => $self->selector,
23     filters => [ @{$self->filters}, $filter ]
24   });
25 }
26
27 sub apply_to_stream {
28   my ($self, $stream) = @_;
29   HTML::Zoom::FilterStream->new({
30     stream => $stream,
31     match => $self->selector,
32     filters => $self->filters,
33     zconfig => $self->_zconfig,
34   });
35 }
36     
37
38 1;