X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom%2FStreamBase.pm;h=a76a63650e08d64e78af24f5d5d758fbdcb12f8a;hb=d80786d07e9746f71b9b93554ce38f62ad1787e6;hp=3df8a8178612da501a01c83a92995891970ab748;hpb=f8ed299b5a37e9ff273ee064f7087449353c69d8;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom/StreamBase.pm b/lib/HTML/Zoom/StreamBase.pm index 3df8a81..a76a636 100644 --- a/lib/HTML/Zoom/StreamBase.pm +++ b/lib/HTML/Zoom/StreamBase.pm @@ -2,6 +2,9 @@ package HTML::Zoom::StreamBase; use strict; use warnings FATAL => 'all'; +use HTML::Zoom::MatchWithoutFilter; + +sub _zconfig { shift->{_zconfig} } sub peek { my ($self) = @_; @@ -53,4 +56,24 @@ sub map { }); } +sub with_filter { + my ($self, $selector, $filter) = @_; + my $match = $self->_parse_selector($selector); + $self->_zconfig->stream_utils->wrap_with_filter($self, $match, $filter); +} + +sub select { + my ($self, $selector) = @_; + my $match = $self->_parse_selector($selector); + return HTML::Zoom::MatchWithoutFilter->construct( + $self, $match, $self->_zconfig->filter_builder, + ); +} + +sub _parse_selector { + my ($self, $selector) = @_; + return $selector if ref($selector); # already a match sub + $self->_zconfig->selector_parser->parse_selector($selector); +} + 1;