From: Matt S Trout Date: Mon, 14 Feb 2011 19:11:04 +0000 (+0000) Subject: fix bug where first event isn't passed to filter during collect w/out inside X-Git-Tag: release_0.009004~7 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FHTML-Zoom.git;a=commitdiff_plain;h=2abde91e52cfbe863892c1932e795e0b6305e6df fix bug where first event isn't passed to filter during collect w/out inside --- 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) {