/[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 62 by dpavlin, Mon Jul 10 12:01:04 2006 UTC revision 65 by dpavlin, Thu Jul 13 13:34:30 2006 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.22_2;          $VERSION     = 0.22;
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 84  Open ISIS database Line 84  Open ISIS database
84          read_fdt => 1,          read_fdt => 1,
85          include_deleted => 1,          include_deleted => 1,
86          hash_filter => sub {          hash_filter => sub {
87                  my $v = shift;                  my ($v,$field_number) = @_;
88                  $v =~ s#foo#bar#g;                  $v =~ s#foo#bar#g;
89          },          },
90          debug => 1,          debug => 1,
91          join_subfields_with => ' ; ',          join_subfields_with => ' ; ',
         regexps => [  
                 's/something/else/g',  
         ],  
92   );   );
93    
94  Options are described below:  Options are described below:
# Line 117  Don't skip logically deleted records in Line 114  Don't skip logically deleted records in
114    
115  =item hash_filter  =item hash_filter
116    
117  Filter code ref which will be used before data is converted to hash.  Filter code ref which will be used before data is converted to hash. It will
118    receive two arguments, whole line from current field (in C<< $_[0] >>) and
119    field number (in C<< $_[1] >>).
120    
121  =item debug  =item debug
122    
# Line 129  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    
 =item regexpes  
   
 Define (any number) of regexpes to apply at field values before they are  
 splitted into subfield. This is great place to split subfields in input to  
 mulitple subfields if needed or rename subfields.  
   
131  =back  =back
132    
133  =cut  =cut
# Line 528  There is also more elaborative way to ca Line 521  There is also more elaborative way to ca
521    my $hash = $isis->to_hash({    my $hash = $isis->to_hash({
522          mfn => 42,          mfn => 42,
523          include_subfields => 1,          include_subfields => 1,
         regexps => [  
                 's/something/else/g',  
         ],  
524    });    });
525    
526  Each option controll creation of hash:  Each option controll creation of hash:
# Line 558  have original record subfield order and Line 548  have original record subfield order and
548  Define delimiter which will be used to join repeatable subfields. You can  Define delimiter which will be used to join repeatable subfields. You can
549  specify option here instead in L</new> if you want to have per-record control.  specify option here instead in L</new> if you want to have per-record control.
550    
 =item regexpes  
   
 Override C<regexpes> specified in L</new>.  
   
551  =back  =back
552    
553  =cut  =cut
# Line 578  sub to_hash { Line 564  sub to_hash {
564                  $mfn = $arg->{mfn} || confess "need mfn in arguments";                  $mfn = $arg->{mfn} || confess "need mfn in arguments";
565          }          }
566    
         $arg->{regexpes} ||= $self->{regexpes};  
   
         confess "regexps must be HASH" if ($arg->{regexps} && ref($arg->{regexps}) ne 'HASH');  
   
567          # init record to include MFN as field 000          # init record to include MFN as field 000
568          my $rec = { '000' => [ $mfn ] };          my $rec = { '000' => [ $mfn ] };
569    
# Line 596  sub to_hash { Line 578  sub to_hash {
578    
579                          # filter output                          # filter output
580                          if ($self->{'hash_filter'}) {                          if ($self->{'hash_filter'}) {
581                                  $l = $self->{'hash_filter'}->($l);                                  $l = $self->{'hash_filter'}->($l, $f_nr);
582                                  next unless defined($l);                                  next unless defined($l);
583                          }                          }
584    
                         # apply regexps  
                         if ($arg->{regexps} && defined($arg->{regexps}->{$f_nr})) {  
                                 confess "regexps->{$f_nr} must be ARRAY" if (ref($arg->{regexps}->{$f_nr}) ne 'ARRAY');  
                                 my $c = 0;  
                                 foreach my $r (@{ $arg->{regexps}->{$f_nr} }) {  
                                         while ( eval '$l =~ ' . $r ) { $c++ };  
                                 }  
                                 warn "## field $f_nr triggered $c regexpes\n" if ($c && $self->{debug});  
                         }  
   
585                          my $val;                          my $val;
586                          my $r_sf;       # repeatable subfields in this record                          my $r_sf;       # repeatable subfields in this record
587    
# Line 781  older versions if you really have to): Line 753  older versions if you really have to):
753    
754  =over 8  =over 8
755    
756    =item 0.22
757    
758    Added field number when calling C<hash_filter>
759    
760  =item 0.21  =item 0.21
761    
762  Added C<join_subfields_with> to L</new> and L</to_hash>.  Added C<join_subfields_with> to L</new> and L</to_hash>.

Legend:
Removed from v.62  
changed lines
  Added in v.65

  ViewVC Help
Powered by ViewVC 1.1.26