use strict;
use MARC::Fast 0.03;
+use base qw/WebPAC::Common/;
=head1 NAME
=head1 VERSION
-Version 0.05
+Version 0.06
=cut
-our $VERSION = '0.05';
+our $VERSION = '0.06';
=head1 SYNOPSIS
Open USMARC, Unimarc or any other file format that has same internal
structure using C<MARC::Fast>.
- my $marc = new WebPAC::Input::MARC();
- $marc->open( path => '/path/to/marc.iso' );
+ my $marc = new WebPAC::Input::MARC(
+ path => '/path/to/marc.iso'
+ );
=head1 FUNCTIONS
-=head2 open_db
+=head2 new
-Returns handle to database
+Returns new low-level input API object
- my $db = $open_db(
+ my $marc = new WebPAC::Input::MARC(
path => '/path/to/marc.iso',
filter => \&code_ref,
}
=cut
-sub open_db {
- my $self = shift;
+sub new {
+ my $class = shift;
+ my $self = {@_};
+ bless($self, $class);
my $arg = {@_};
my $db_size = $db->count - 1; # FIXME
$self->{_marc_size} = $db_size;
+ $self->{_marc_db} = $db;
- return ($db, $db_size);
+ $self ? return $self : return undef;
}
=head2 fetch_rec
Return record with ID C<$mfn> from database
- my $rec = $self->fetch_rec( $db, $mfn );
+ my $rec = $self->fetch_rec( $mfn );
}
sub fetch_rec {
my $self = shift;
- my ($db, $mfn) = @_;
+ my $mfn = shift;
if ($mfn > $self->{_marc_size}) {
$self->_get_logger()->warn("seek beyond database size $self->{_marc_size} to $mfn");
} else {
- my $row = $db->to_hash($mfn);
+ my $row = $self->{_marc_db}->to_hash($mfn);
push @{$row->{'000'}}, $mfn;
return $row;
}
}
-=head1 PROPERTIES
+=head2 size
-=head2 _marc_size
+Return number of records in database
-Store size of MARC database
+ my $size = $isis->size;
- print $self->{_marc_size};
+=cut
+sub size {
+ my $self = shift;
+ return $self->{_marc_size};
+}
=head1 AUTHOR