X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FHTML%2FZoom%2FFilterBuilder.pm;fp=lib%2FHTML%2FZoom%2FFilterBuilder.pm;h=92961dcb398a8d654853e01822ef4940086ac119;hb=2abde91e52cfbe863892c1932e795e0b6305e6df;hp=c8abd5ce01ecf3fdaa0e3f7ada540deb0c0666ff;hpb=1cf035405cb81b780825c083cf7f5c0767b19243;p=catagits%2FHTML-Zoom.git diff --git a/lib/HTML/Zoom/FilterBuilder.pm b/lib/HTML/Zoom/FilterBuilder.pm index c8abd5c..92961dc 100644 --- a/lib/HTML/Zoom/FilterBuilder.pm +++ b/lib/HTML/Zoom/FilterBuilder.pm @@ -103,7 +103,20 @@ sub collect { my $name = $evt->{name}; my $depth = 1; my $_next = $content ? 'peek' : 'next'; - $stream = do { local $_ = $stream; $filter->($stream) } if $filter; + if ($filter) { + if ($content) { + $stream = do { local $_ = $stream; $filter->($stream) }; + } else { + $stream = do { + local $_ = $self->_stream_concat( + $self->_stream_from_array($evt), + $stream, + ); + $filter->($_); + }; + $evt = $stream->next; + } + } my $collector = $self->_stream_from_code(sub { return unless $stream; while (my ($evt) = $stream->$_next) {