/[Biblio-Isis]/trunk/lib/Biblio/Isis.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/Biblio/Isis.pm

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

revision 66 by dpavlin, Fri Aug 25 10:20:58 2006 UTC revision 70 by dpavlin, Fri May 18 20:26:01 2007 UTC
# Line 7  use File::Glob qw(:globally :nocase); Line 7  use File::Glob qw(:globally :nocase);
7  BEGIN {  BEGIN {
8          use Exporter ();          use Exporter ();
9          use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);          use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
10          $VERSION     = 0.23;          $VERSION     = 0.24_1;
11          @ISA         = qw (Exporter);          @ISA         = qw (Exporter);
12          #Give a hoot don't pollute, do not export more than needed by default          #Give a hoot don't pollute, do not export more than needed by default
13          @EXPORT      = qw ();          @EXPORT      = qw ();
# Line 128  Define delimiter which will be used to j Line 128  Define delimiter which will be used to j
128  option is included to support lagacy application written against version  option is included to support lagacy application written against version
129  older than 0.21 of this module. By default, it disabled. See L</to_hash>.  older than 0.21 of this module. By default, it disabled. See L</to_hash>.
130    
131    =item ignore_empty_subfields
132    
133    Remove all empty subfields while reading from ISIS file.
134    
135  =back  =back
136    
137  =cut  =cut
# Line 139  sub new { Line 143  sub new {
143    
144          croak "new needs database name (isisdb) as argument!" unless ({@_}->{isisdb});          croak "new needs database name (isisdb) as argument!" unless ({@_}->{isisdb});
145    
146          foreach my $v (qw{isisdb debug include_deleted hash_filter}) {          foreach my $v (qw{isisdb debug include_deleted hash_filter join_subfields_with ignore_empty_subfields}) {
147                  $self->{$v} = {@_}->{$v};                  $self->{$v} = {@_}->{$v} if defined({@_}->{$v});
148          }          }
149    
150          my @isis_files = grep(/\.(FDT|MST|XRF|CNT)$/i,glob($self->{isisdb}."*"));          my @isis_files = grep(/\.(FDT|MST|XRF|CNT)$/i,glob($self->{isisdb}."*"));
# Line 384  sub fetch { Line 388  sub fetch {
388                  # skip zero-sized fields                  # skip zero-sized fields
389                  next if ($FieldLEN[$i] == 0);                  next if ($FieldLEN[$i] == 0);
390    
391                  push @{$self->{record}->{$FieldTAG[$i]}}, substr($buff,$FieldPOS[$i],$FieldLEN[$i]);                  my $v = substr($buff,$FieldPOS[$i],$FieldLEN[$i]);
392    
393                    if ( $self->{ignore_empty_subfields} ) {
394                            $v =~ s/(\^\w)+(\^\w)/$2/g;
395                            $v =~ s/\^\w$//;                        # last on line?
396                            next if ($v eq '');
397                    }
398    
399                    push @{$self->{record}->{$FieldTAG[$i]}}, $v;
400          }          }
401    
402          $self->{'current_mfn'} = $mfn;          $self->{'current_mfn'} = $mfn;
# Line 576  sub to_hash { Line 588  sub to_hash {
588    
589          my $row = $self->fetch($mfn) || return;          my $row = $self->fetch($mfn) || return;
590    
591          my $j_rs = $arg->{join_subfields_with};          my $j_rs = $arg->{join_subfields_with} || $self->{join_subfields_with};
592          $j_rs = $self->{join_subfields_with} unless(defined($j_rs));          $j_rs = $self->{join_subfields_with} unless(defined($j_rs));
593          my $i_sf = $arg->{include_subfields};          my $i_sf = $arg->{include_subfields};
594    
# Line 599  sub to_hash { Line 611  sub to_hash {
611                                          next if (! $t);                                          next if (! $t);
612                                          my ($sf,$v) = (substr($t,0,1), substr($t,1));                                          my ($sf,$v) = (substr($t,0,1), substr($t,1));
613                                          # XXX this might be option, but why?                                          # XXX this might be option, but why?
614                                          next unless ($v);                                          next unless (defined($v) && $v ne '');
615  #                                       warn "### $f_nr^$sf:$v",$/ if ($self->{debug} > 1);  #                                       warn "### $f_nr^$sf:$v",$/ if ($self->{debug} > 1);
616    
617                                          if (ref( $val->{$sf} ) eq 'ARRAY') {                                          if (ref( $val->{$sf} ) eq 'ARRAY') {
# Line 758  older versions if you really have to): Line 770  older versions if you really have to):
770    
771  =over 8  =over 8
772    
773    =item 0.24
774    
775    Added C<ignore_empty_subfields>
776    
777  =item 0.23  =item 0.23
778    
779  Added C<hash_filter> to L</to_hash>  Added C<hash_filter> to L</to_hash>
780    
781    Fixed bug with documented C<join_subfields_with> in L</new> which wasn't
782    implemented
783    
784  =item 0.22  =item 0.22
785    
786  Added field number when calling C<hash_filter>  Added field number when calling C<hash_filter>

Legend:
Removed from v.66  
changed lines
  Added in v.70

  ViewVC Help
Powered by ViewVC 1.1.26