1 package HTML::Zoom::StreamBase;
4 use warnings FATAL => 'all';
5 use HTML::Zoom::TransformBuilder;
7 sub _zconfig { shift->{_zconfig} }
11 if (exists $self->{_peeked}) {
12 return ($self->{_peeked});
14 if (my ($peeked) = $self->_next) {
15 return ($self->{_peeked} = $peeked);
23 # peeked entry so return that
25 if (exists $self->{_peeked}) {
26 return (delete $self->{_peeked});
35 require HTML::Zoom::FlattenedStream;
36 HTML::Zoom::FlattenedStream->new({
38 zconfig => $self->_zconfig
43 my ($self, $mapper) = @_;
44 require HTML::Zoom::MappedStream;
45 HTML::Zoom::MappedStream->new({
46 source => $self, mapper => $mapper, zconfig => $self->_zconfig
51 my ($self, $selector, $filter) = @_;
52 my $match = $self->_parse_selector($selector);
53 $self->_zconfig->stream_utils->wrap_with_filter($self, $match, $filter);
57 my ($self, $transform) = @_;
58 $transform->apply_to_stream($self);
62 my ($self, $selector) = @_;
63 return HTML::Zoom::TransformBuilder->new({
64 zconfig => $self->_zconfig,
65 selector => $selector,
73 # see notes in HTML/Zoom.pm for why this needs to be fixed
74 $self->select($self->transform->selector);
78 my ($self, $code) = @_;