introduce ZConfig system, first cut at HTML::Zoom itself
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / CodeStream.pm
index 7c8fefb..1d70a58 100644 (file)
@@ -2,6 +2,7 @@ package HTML::Zoom::CodeStream;
 
 use strict;
 use warnings FATAL => 'all';
+use base qw(HTML::Zoom::StreamBase);
 
 sub from_array {
   my ($class, @array) = @_;
@@ -13,11 +14,19 @@ sub from_array {
 
 sub new {
   my ($class, $args) = @_;
-  bless({ _code => $args->{code} }, $class);
+  bless({ _code => $args->{code}, _zconfig => $args->{zconfig} }, $class);
 }
 
 sub next {
-  $_[0]->{_code}->()
+  my ($self) = @_;
+
+  # peeked entry so return that
+
+  if (exists $self->{_peeked}) {
+    return (delete $self->{_peeked});
+  }
+
+  $self->{_code}->();
 }
 
 1;