- join FU and FX fields, split ID SC and DE on ;
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 18 Sep 2009 21:38:09 +0000 (21:38 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 18 Sep 2009 21:38:09 +0000 (21:38 +0000)
- implemented limit and offset for speedup

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@1287 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Input/ISI.pm

index 67294f6..2a1606d 100644 (file)
@@ -105,6 +105,10 @@ sub new {
        my $rec;
 
        $self->{size} = 0;
+       my $max_size;
+       $max_size = ( $self->{offset} || 0 ) + $self->{limit} if $self->{limit};
+
+       warn "# max_size: $max_size";
 
        while( $line = <$fh> ) {
                chomp($line);
@@ -124,11 +128,18 @@ sub new {
                                }
                } elsif ( $line eq 'ER' ) {
                        # join tags
-                       foreach ( qw/AB DE ID TI SO RP SC/ ) {
+                       foreach ( qw/AB DE ID TI SO RP SC FU FX/ ) {
                                $rec->{$_} = join(' ', @{ $rec->{$_} }) if defined $rec->{$_};
                        }
+                       # split on ;
+                       foreach ( qw/ID SC DE/ ) {
+                               $rec->{$_} = [ split(/;\s/, $rec->{$_}) ] if defined $rec->{$_};
+                       }
                        $rec->{'000'} = [ ++$self->{size} ];
                        push @{ $self->{_rec} }, $rec;
+
+                       last if $max_size && $self->{size} == $max_size;
+
                        $rec = {};
                        $line = <$fh>;
                        chomp $line;