$log->info("opend $file with $pages pages");
- my @lines;
+ my @lines = ();
foreach my $p ( 1 .. $pages ) {
my $tree = $doc->getPageContentTree($p);
}
}
- $self->size( $#lines );
+ $self->{_lines} = \@lines;
$log->debug("loaded ", $self->size, " records", sub { dump( @lines ) });
my $rec = $input->fetch_rec( $mfn, $filter_coderef );
+Records are returned as field C<A>, C<B> and so on...
+
+Last supported column is C<ZZ>.
+
=cut
sub fetch_rec {
my ( $mfn, $filter_coderef ) = @_;
- return $self->{_rec}->[$mfn-1];
+ my $rec = {
+ '000' => [ $mfn ],
+ };
+
+ my $line = $self->{_lines}->[ $mfn - 1 ] || return;
+ confess "expected ARRAY for _lines $mfn" unless ref($line) eq 'ARRAY';
+
+# warn "## line = ",dump( $line );
+
+ my $col = 'A';
+ my $c = 0;
+ foreach my $e ( @$line ) {
+ $rec->{$col} = $e;
+ $c++;
+ # FIXME what about columns > ZZ
+ if ( $col eq 'Z' ) {
+ $col .= 'AA';
+ } elsif ( $col eq 'ZZ' ) {
+ $self->_get_logger()->logwarn("ignoring colums above ZZ (original ", $#$line + 1, " > $c max columns)");
+ last;
+ } elsif ( $col =~ m/([A-Z])Z$/ ) {
+ $col .= $1++ . 'A';
+ } else {
+ $col++;
+ }
+ }
+
+# warn "## rec = ",dump( $rec );
+
+ return $rec;
}
sub size {
my $self = shift;
- return $#{$self->{_rec}} + 1;
+ return $#{$self->{_lines}} + 1;
}
=head1 SEE ALSO
use strict;
use blib;
-use Test::More tests => 9;
+use Test::More tests => 11;
BEGIN {
use_ok( 'WebPAC::Test' );
), "open");
ok(my $size = $input->size, "size");
+$size = 3;
+
foreach my $mfn ( 1 ... $size ) {
my $rec = $input->fetch;
if ($mfn <= 10 || $mfn == 20) {