/[webpac2]/branches/Sack/lib/WebPAC/Input/ISI.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /branches/Sack/lib/WebPAC/Input/ISI.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 899 by dpavlin, Wed Oct 10 19:01:57 2007 UTC revision 904 by dpavlin, Fri Oct 12 12:07:35 2007 UTC
# Line 6  use strict; Line 6  use strict;
6  use WebPAC::Input;  use WebPAC::Input;
7  use base qw/WebPAC::Common/;  use base qw/WebPAC::Common/;
8    
9    use Data::Dump qw/dump/;
10    
11  =head1 NAME  =head1 NAME
12    
13  WebPAC::Input::ISI - support for ISI Export Format  WebPAC::Input::ISI - support for ISI Export Format
14    
15  =head1 VERSION  =head1 VERSION
16    
17  Version 0.00  Version 0.02
18    
19  =cut  =cut
20    
21  our $VERSION = '0.00';  our $VERSION = '0.02';
   
22    
23  =head1 SYNOPSIS  =head1 SYNOPSIS
24    
# Line 54  path to ISI export file Line 55  path to ISI export file
55    
56  =cut  =cut
57    
58    my $subfields = {
59            'CR' => sub {
60                    my @v = split(/, /, shift);
61                    my $f;
62                    foreach ( qw/author year reference volume page/ ) {
63                            if ( my $tmp = shift @v ) {
64                                    $f->{$_} = $tmp;
65                            }
66                    }
67                    if ( $f->{author} =~ /^\*(.+)/ ) {
68                            delete $f->{author};
69                            $f->{institution} = $1;
70                    }
71                    return $f;
72            },
73    };
74    
75  sub new {  sub new {
76          my $class = shift;          my $class = shift;
77          my $self = {@_};          my $self = {@_};
# Line 99  sub new { Line 117  sub new {
117                  } elsif ( $line =~ /^\s{3}(.+)$/ ) {                  } elsif ( $line =~ /^\s{3}(.+)$/ ) {
118                                  $v = $1;                                  $v = $1;
119                  } elsif ( $line eq 'ER' ) {                  } elsif ( $line eq 'ER' ) {
120                            # join tags
121                            foreach ( qw/AB DE ID TI/ ) {
122                                    $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_};
123                            }
124                          push @{ $self->{_rec} }, $rec;                          push @{ $self->{_rec} }, $rec;
125                          $rec = {};                          $rec = {};
126                          $line = <$fh>;                          $line = <$fh>;
# Line 110  sub new { Line 132  sub new {
132                          $log->logdie("can't parse +$. $arg->{path} : $line");                          $log->logdie("can't parse +$. $arg->{path} : $line");
133                  }                  }
134    
135                  push @{ $rec->{$tag} }, $v;                  if ( defined $v ) {
136                            $v = $subfields->{$tag}->($v) if defined $subfields->{$tag};
137    
138                            $log->debug("$tag: ", sub { dump( $v ) });
139                            push @{ $rec->{$tag} }, $v;
140                    }
141    
142          }          }
143    
# Line 149  sub size { Line 176  sub size {
176          return $#{$self->{_rec}} + 1;          return $#{$self->{_rec}} + 1;
177  }  }
178    
179    =head1 SEE ALSO
180    
181    L<http://isibasic.com/help/helpprn.html> is only sane source of document format which Google could find...
182    
183  =head1 AUTHOR  =head1 AUTHOR
184    
185  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>

Legend:
Removed from v.899  
changed lines
  Added in v.904

  ViewVC Help
Powered by ViewVC 1.1.26