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(1)) {
15 return ($self->{_peeked} = $peeked);
23 # peeked entry so return that
25 if (exists $self->{_peeked}) {
26 if (my $peeked_from = delete $self->{_peeked_from}) {
29 return (delete $self->{_peeked});
38 require HTML::Zoom::FlattenedStream;
39 HTML::Zoom::FlattenedStream->new({
41 zconfig => $self->_zconfig
46 my ($self, $mapper) = @_;
47 require HTML::Zoom::MappedStream;
48 HTML::Zoom::MappedStream->new({
49 source => $self, mapper => $mapper, zconfig => $self->_zconfig
54 my ($self, $selector, $filter) = @_;
55 my $match = $self->_parse_selector($selector);
56 $self->_zconfig->stream_utils->wrap_with_filter($self, $match, $filter);
60 my ($self, $transform) = @_;
61 $transform->apply_to_stream($self);
65 my ($self, $selector) = @_;
66 return HTML::Zoom::TransformBuilder->new({
67 zconfig => $self->_zconfig,
68 selector => $selector,
76 # see notes in HTML/Zoom.pm for why this needs to be fixed
77 $self->select($self->transform->selector);
81 my ($self, $code) = @_;
88 $self->_zconfig->producer->html_from_stream($self);