/[webpac2]/trunk/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 /trunk/lib/WebPAC/Input/ISI.pm

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

revision 1215 by dpavlin, Tue Jun 2 13:16:02 2009 UTC revision 1303 by dpavlin, Sun Sep 20 19:56:33 2009 UTC
# Line 104  sub new { Line 104  sub new {
104          my $tag;          my $tag;
105          my $rec;          my $rec;
106    
107          $self->{size} = 0;          my $pos = 0;
108            my $offset = $self->{offset} || 0;
109            my $end_pos = 0;
110            $end_pos = $offset + $self->{limit} if $self->{limit};
111    
112            warn "# range: $offset - $end_pos";
113    
114          while( $line = <$fh> ) {          while( $line = <$fh> ) {
115                  chomp($line);                  chomp($line);
   
116                  my $v;                  my $v;
117    
118                  if ( $line =~ /^(\S\S)\s(.+)$/ ) {                  if ( $line eq 'EF' ) {
119                            last;
120                    } elsif ( $line eq 'ER' ) {
121                            last if $end_pos && $pos >= $end_pos;
122                            $pos++;
123                            next if $offset && $pos < $offset;
124    
125                            # join tags
126                            foreach ( qw/AB DE ID TI SO RP SC FU FX PA JI/ ) {
127                                    $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_};
128                            }
129                            # split on ;
130                            foreach ( qw/ID SC DE/ ) {
131                                    $rec->{$_} = [ split(/;\s/, $rec->{$_}) ] if defined $rec->{$_};
132                            }
133                            $rec->{'000'} = [ $pos ];
134                            push @{ $self->{_rec} }, $rec;
135    
136                            $rec = {};
137                            $line = <$fh>;
138                            chomp $line;
139                            $log->logdie("expected blank like in ",$arg->{path}, " +$.: $line") unless ( $line eq '' );
140                    } elsif ( $offset && $pos < $offset ) {
141                            next;
142                    } elsif ( $line =~ /^(\S\S)\s(.+)$/ ) {
143                                  $tag = $1;                                  $tag = $1;
144                                  $v = $2;                                  $v = $2;
145                  } elsif ( $line =~ /^\s{3}(.+)$/ ) {                  } elsif ( $line =~ /^\s{3}(.+)$/ ) {
# Line 122  sub new { Line 150  sub new {
150                                          $doi =~ s{^\s{3}}{ } || die "can't find DOI in: $doi";                                          $doi =~ s{^\s{3}}{ } || die "can't find DOI in: $doi";
151                                          $v .= $doi;                                          $v .= $doi;
152                                  }                                  }
153                  } elsif ( $line eq 'ER' ) {  
154                          # join tags                  } elsif ( $line =~ m{^(\S\S)\s*$} ) {
155                          foreach ( qw/AB DE ID TI SO RP SC/ ) {                          warn "# $arg->{path} +$. empty |$line|\n";
                                 $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_};  
                         }  
                         $rec->{'000'} = [ ++$self->{size} ];  
                         push @{ $self->{_rec} }, $rec;  
                         $rec = {};  
                         $line = <$fh>;  
                         chomp $line;  
                         $log->logdie("expected blank like in ",$arg->{path}, " +$.: $line") unless ( $line eq '' );  
                 } elsif ( $line eq 'EF' ) {  
                         last;  
156                  } else {                  } else {
157                          $log->logdie("can't parse +$. $arg->{path} : $line");                          $log->logdie("can't parse +$. $arg->{path} |$line|");
158                  }                  }
159    
160                  if ( defined $v ) {                  if ( defined $v ) {
# Line 148  sub new { Line 166  sub new {
166    
167          }          }
168    
169            $self->{size} = $pos - $offset;
170    
171          $log->debug("loaded ", $self->size, " records");          $log->debug("loaded ", $self->size, " records");
172    
173          $self ? return $self : return undef;          $self ? return $self : return undef;

Legend:
Removed from v.1215  
changed lines
  Added in v.1303

  ViewVC Help
Powered by ViewVC 1.1.26