1 package WebPAC::Input::Ovid;
8 use base qw/WebPAC::Common/;
10 use Data::Dump qw/dump/;
14 WebPAC::Input::Ovid - support for Ovid citation export
22 our $VERSION = '0.01';
26 Open file in Ovid citation export fromat
28 my $input = new WebPAC::Input::Ovid(
29 path => '/path/to/ovid-cites.txt',
36 Returns new low-level input API object
38 my $input = new WebPAC::Input::Ovid(
39 path => '/path/to/ebsco.txt',
41 my ($l,$field_nr) = @_;
42 # do something with $l which is line of input file
53 path to Ovid export file
66 my $log = $self->_get_logger();
68 open( my $fh, '<', $arg->{path} ) || $log->logconfess("can't open $arg->{path}: $!");
70 $log->info("reading '$arg->{path}'");
78 while( my $line = <$fh> ) {
79 $line =~ s{[\r\n]+$}{};
84 if ( $line =~ m/^<(\d+)>$/ ) {
85 push @{ $self->{_rec} }, $rec if $rec;
86 warn "## rec = ",dump( $rec ),$/;
87 my $expect_rec = $#{ $self->{_rec} } + 2;
88 warn "wrong Ovid record number: $1 != $expect_rec" unless $1 == $expect_rec;
89 $rec = { '000' => [ $1 ] };
90 } elsif ( $line =~ /^(\w.+)/ ) {
93 } elsif ( $line =~ /^\s\s(.+)/ ) {
96 $rec->{$tag} = [ $v ];
98 warn "### skip: '$line'\n";
104 push @{ $self->{_rec} }, $rec if $rec;
106 $log->debug("loaded ", $self->size, " records");
108 $self ? return $self : return undef;
113 Return record with ID C<$mfn> from database
115 my $rec = $input->fetch_rec( $mfn, $filter_coderef );
122 my ( $mfn, $filter_coderef ) = @_;
124 return $self->{_rec}->[$mfn-1];
130 Return number of records in database
132 my $size = $input->size;
138 return $#{ $self->{_rec} } + 1;
143 Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
145 =head1 COPYRIGHT & LICENSE
147 Copyright 2008 Dobrica Pavlinusic, All Rights Reserved.
149 This program is free software; you can redistribute it and/or modify it
150 under the same terms as Perl itself.
154 1; # End of WebPAC::Input::Ovid