r1045@llin: dpavlin | 2006-09-29 21:38:42 +0200
[webpac2] / lib / WebPAC / Input / MARC.pm
index a4f3cbf..987bab1 100644 (file)
@@ -4,6 +4,7 @@ use warnings;
 use strict;
 
 use MARC::Fast 0.03;
+use base qw/WebPAC::Common/;
 
 =head1 NAME
 
@@ -11,11 +12,11 @@ WebPAC::Input::MARC - support for MARC database files
 
 =head1 VERSION
 
-Version 0.05
+Version 0.06
 
 =cut
 
-our $VERSION = '0.05';
+our $VERSION = '0.06';
 
 
 =head1 SYNOPSIS
@@ -23,24 +24,27 @@ our $VERSION = '0.05';
 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 = {@_};
 
@@ -55,15 +59,16 @@ sub open_db {
        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 );
 
 }
 
@@ -72,25 +77,29 @@ Return record with ID C<$mfn> from database
 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