finish converting from MatchWithoutFilter to TransformBuilder
[catagits/HTML-Zoom.git] / lib / HTML / Zoom / StreamBase.pm
index c04c7b6..f81089f 100644 (file)
@@ -2,7 +2,7 @@ package HTML::Zoom::StreamBase;
 
 use strict;
 use warnings FATAL => 'all';
-use HTML::Zoom::MatchWithoutFilter;
+use HTML::Zoom::TransformBuilder;
 
 sub _zconfig { shift->{_zconfig} }
 
@@ -11,12 +11,25 @@ sub peek {
   if (exists $self->{_peeked}) {
     return ($self->{_peeked});
   }
-  if (my ($peeked) = $self->next) {
+  if (my ($peeked) = $self->_next) {
     return ($self->{_peeked} = $peeked);
   }
   return;
 }
 
+sub next {
+  my ($self) = @_;
+
+  # peeked entry so return that
+
+  if (exists $self->{_peeked}) {
+    return (delete $self->{_peeked});
+  }
+
+  $self->_next;
+}
+
+
 sub flatten {
   my $self = shift;
   require HTML::Zoom::FlattenedStream;
@@ -40,18 +53,19 @@ sub with_filter {
   $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 with_transform {
+  my ($self, $transform) = @_;
+  $transform->apply_to_stream($self);
 }
 
-sub _parse_selector {
+sub select {
   my ($self, $selector) = @_;
-  return $selector if ref($selector); # already a match sub
-  $self->_zconfig->selector_parser->parse_selector($selector);
+  return HTML::Zoom::TransformBuilder->new({
+    zconfig => $self->_zconfig,
+    selector => $selector,
+    filters => [],
+    proto => $self,
+  });
 }
 
 sub apply {