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

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

revision 736 by dpavlin, Thu Oct 5 12:57:51 2006 UTC revision 785 by dpavlin, Wed Dec 6 23:44:36 2006 UTC
# Line 19  use Exporter 'import'; Line 19  use Exporter 'import';
19          save_into_lookup          save_into_lookup
20    
21          split_rec_on          split_rec_on
22    
23            get set
24  /;  /;
25    
26  use warnings;  use warnings;
# Line 39  WebPAC::Normalize - describe normalisato Line 41  WebPAC::Normalize - describe normalisato
41    
42  =head1 VERSION  =head1 VERSION
43    
44  Version 0.22  Version 0.24
45    
46  =cut  =cut
47    
48  our $VERSION = '0.22';  our $VERSION = '0.24';
49    
50  =head1 SYNOPSIS  =head1 SYNOPSIS
51    
# Line 164  Return hash formatted as data structure Line 166  Return hash formatted as data structure
166    
167  =cut  =cut
168    
169  my ($out, $marc_record, $marc_encoding, $marc_repeatable_subfield, $marc_indicators);  my ($out, $marc_record, $marc_encoding, $marc_repeatable_subfield, $marc_indicators, $leader);
170  my ($marc_record_offset, $marc_fetch_offset) = (0, 0);  my ($marc_record_offset, $marc_fetch_offset) = (0, 0);
171    
172  sub _get_ds {  sub _get_ds {
# Line 181  Clean data structure hash for next recor Line 183  Clean data structure hash for next recor
183    
184  sub _clean_ds {  sub _clean_ds {
185          my $a = {@_};          my $a = {@_};
186          ($out,$marc_record, $marc_encoding, $marc_repeatable_subfield, $marc_indicators) = ();          ($out,$marc_record, $marc_encoding, $marc_repeatable_subfield, $marc_indicators, $leader) = ();
187          ($marc_record_offset, $marc_fetch_offset) = (0,0);          ($marc_record_offset, $marc_fetch_offset) = (0,0);
188          $marc_encoding = $a->{marc_encoding};          $marc_encoding = $a->{marc_encoding};
189  }  }
# Line 487  sub marc_leader { Line 489  sub marc_leader {
489          my ($offset,$value) = @_;          my ($offset,$value) = @_;
490    
491          if ($offset) {          if ($offset) {
492                  $out->{' leader'}->{ $offset } = $value;                  $leader->{ $offset } = $value;
493          } else {          } else {
494                  return $out->{' leader'};                  return $leader;
495          }          }
496  }  }
497    
# Line 880  syntaxtic sugar for Line 882  syntaxtic sugar for
882    @v = rec('200')    @v = rec('200')
883    @v = rec('200','a')    @v = rec('200','a')
884    
885    If rec() returns just single value, it will
886    return scalar, not array.
887    
888  =cut  =cut
889    
890  sub rec {  sub rec {
# Line 889  sub rec { Line 894  sub rec {
894          } elsif ($#_ == 1) {          } elsif ($#_ == 1) {
895                  @out = rec2(@_);                  @out = rec2(@_);
896          }          }
897          if (@out) {          if ($#out == 0 && ! wantarray) {
898                    return $out[0];
899            } elsif (@out) {
900                  return @out;                  return @out;
901          } else {          } else {
902                  return '';                  return '';
# Line 1017  Easy as pie, right? Line 1024  Easy as pie, right?
1024  sub lookup {  sub lookup {
1025          my ($what, $database, $input, $key, $having) = @_;          my ($what, $database, $input, $key, $having) = @_;
1026    
1027          confess "lookup needs 5 arguments: what, database, input, key, having" unless ($#_ == 4);          confess "lookup needs 5 arguments: what, database, input, key, having\n" unless ($#_ == 4);
1028    
1029          warn "## lookup ($database, $input, $key)", $/ if ($debug > 1);          warn "## lookup ($database, $input, $key)", $/ if ($debug > 1);
1030          return unless (defined($lookup->{$database}->{$input}->{$key}));          return unless (defined($lookup->{$database}->{$input}->{$key}));
# Line 1031  sub lookup { Line 1038  sub lookup {
1038    
1039          foreach my $h ( @having ) {          foreach my $h ( @having ) {
1040                  if (defined($lookup->{$database}->{$input}->{$key}->{$h})) {                  if (defined($lookup->{$database}->{$input}->{$key}->{$h})) {
1041                          warn "lookup for $database/$input/$key/$h return ",dump($lookup->{$database}->{$input}->{$key}->{$h}),"\n";                          warn "lookup for $database/$input/$key/$h return ",dump($lookup->{$database}->{$input}->{$key}->{$h}),"\n" if ($debug);
1042                          $mfns->{$_}++ foreach keys %{ $lookup->{$database}->{$input}->{$key}->{$h} };                          $mfns->{$_}++ foreach keys %{ $lookup->{$database}->{$input}->{$key}->{$h} };
1043                  }                  }
1044          }          }
# Line 1040  sub lookup { Line 1047  sub lookup {
1047    
1048          my @mfns = sort keys %$mfns;          my @mfns = sort keys %$mfns;
1049    
1050          warn "# lookup loading $database/$input/$key mfn ", join(",",@mfns)," having ",dump(@having),"\n";          warn "# lookup loading $database/$input/$key mfn ", join(",",@mfns)," having ",dump(@having),"\n" if ($debug);
1051    
1052          my $old_rec = $rec;          my $old_rec = $rec;
1053          my @out;          my @out;
# Line 1048  sub lookup { Line 1055  sub lookup {
1055          foreach my $mfn (@mfns) {          foreach my $mfn (@mfns) {
1056                  $rec = $load_row_coderef->( $database, $input, $mfn );                  $rec = $load_row_coderef->( $database, $input, $mfn );
1057    
1058                  warn "got $database/$input/$mfn = ", dump($rec), $/;                  warn "got $database/$input/$mfn = ", dump($rec), $/ if ($debug);
1059    
1060                  my @vals = $what->();                  my @vals = $what->();
1061    
1062                  push @out, ( @vals );                  push @out, ( @vals );
1063    
1064                  warn "lookup for mfn $mfn returned ", dump(@vals), $/;                  warn "lookup for mfn $mfn returned ", dump(@vals), $/ if ($debug);
1065          }          }
1066    
1067  #       if (ref($lookup->{$k}) eq 'ARRAY') {  #       if (ref($lookup->{$k}) eq 'ARRAY') {
# Line 1065  sub lookup { Line 1072  sub lookup {
1072    
1073          $rec = $old_rec;          $rec = $old_rec;
1074    
1075          warn "## lookup returns = ", dump(@out), $/;          warn "## lookup returns = ", dump(@out), $/ if ($debug);
1076    
1077          return @out;          if ($#out == 0) {
1078                    return $out[0];
1079            } else {
1080                    return @out;
1081            }
1082  }  }
1083    
1084  =head2 save_into_lookup  =head2 save_into_lookup
# Line 1239  sub split_rec_on { Line 1250  sub split_rec_on {
1250          }          }
1251  }  }
1252    
1253    my $hash;
1254    
1255    =head2 set
1256    
1257      set( key => 'value' );
1258    
1259    =cut
1260    
1261    sub set {
1262            my ($k,$v) = @_;
1263            warn "## set ( $k => ", dump($v), " )", $/;
1264            $hash->{$k} = $v;
1265    };
1266    
1267    =head2 get
1268    
1269      get( 'key' );
1270    
1271    =cut
1272    
1273    sub get {
1274            my $k = shift || return;
1275            my $v = $hash->{$k};
1276            warn "## get $k = ", dump( $v ), $/;
1277            return $v;
1278    }
1279    
1280    
1281  # END  # END
1282  1;  1;

Legend:
Removed from v.736  
changed lines
  Added in v.785

  ViewVC Help
Powered by ViewVC 1.1.26