Data::Range::Compare::Stream::Iterator::Base - Abstract class
package MyIterator; use strict; use warnings; use IO::File; use IO::Select; use base qw(Data::Range::Compare::Stream::Iterator::Base); use Data::Range::Compare::Stream; sub new { my ($class,%args)=@_; my $has_next; my $self=$class->SUPER::new(%args); if(defined($args{filename})) { my $fh=IO::File->new($args{filename}); if($fh) { $self->{fh}=$fh; my $line=$fh->getline; $self->{next_line}=$line; $has_next=defined($line); } else { $self->{msg}="Error could not open $args{filename} error was: $!"; } } $self->{has_next}=$has_next; return $self; } sub get_next { my ($self)=@_; return undef unless $self->has_next; my $line=$self->{next_line}; $self->{next_line}=$self->{fh}->getline; $self->{has_next}=$self->{next_line} ? 1 : 0; chomp $line; return new Data::Range::Compare::Stream(split /\s+/,$line); } 1;
This module acts as the base class for all Data::Range::Compare::Stream::Iterator classes.
my $iterator=new MyIterator(arguments=>here);
The default object constructor takes a hash of arguments, and returns a blessed anonymous hash. If you want to do anything other than that you will need to overload this function!
while($iterator->has_next) { do something }
The internals return $self->{has_next}. If you want to do anything other than that you will need to overload this function!
my $range=$iterator->get_next;
Objects returned from this function should extend Data::Range::Compare::Stream::Result::Base
my $string=$iterator->to_string;
Returns the package name of $iterator
$iterator->on_consolidate;
This object needs to be called when ranges are being consolidated.
$iterator->delete_from_root($id);
Deletes $id from $iterator.
if($iterator->is_child) { ... }
Returns true if the object was auto generated by another object.
if($iterator->has_child) { ... }
Returns true if this $iterator auto generated a new iterator object
my $id=$iterator->get_column_id
Returns the column id of this $iterator.
$iterator->set_column_id($id);
Sets the column id of $iterator
if($iterator->has_root) { ... }
Returns true if this $iterator was auto generated by another iterator.
my $root=$iterator->get_root;
Returns the root object if $iterator->has_root is true.
my $id=$iterator->get_root_column_id;
Returns the column_id of the object that auto generated $iterator, returns current column_id of the object was not auto generated.
my $child=$iterator->get_child;
Returns the child object if $iterator->has_child is true.
my $id=$iterator->get_child_column_id;
Returns the child column_id if $iterator->has_child is true.
Data::Range::Compare::Stream::Cookbook
Michael Shipper
As of version 0.001 the Project has been moved to Source-Forge.net
Data Range Compare https://sourceforge.net/projects/data-range-comp/
Copyright 2011 Michael Shipper. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Data::Range::Compare::Stream, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Data::Range::Compare::Stream
CPAN shell
perl -MCPAN -e shell install Data::Range::Compare::Stream
For more information on module installation, please visit the detailed CPAN module installation guide.