d33c9ea97024915f962f0cb4fa98fbd3db08a613
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / FlattenedStream.pm
1 package HTML::Zoom::FlattenedStream;
2
3 use strict;
4 use warnings FATAL => 'all';
5 use base qw(HTML::Zoom::StreamBase);
6
7 sub new {
8   my ($class, $args) = @_;
9   bless({ _source => $args->{source}, _zconfig => $args->{zconfig} }, $class);
10 }
11
12 sub _next {
13
14   return unless (my $self = shift)->{_source};
15   my ($next, $s);
16   until (($next) = ($s = $self->{_cur}) ? $s->next : ()) {
17     unless (($self->{_cur}) = $self->{_source}->next) {
18       delete $self->{_source}; return;
19     }
20   }
21   return $next;
22 }
23
24 1;