/[webpac-proto]/isis2stream.pl
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 /isis2stream.pl

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

revision 1.7 by dpavlin, Sun Jun 16 18:11:14 2002 UTC revision 1.8 by dpavlin, Sun Jun 16 19:39:42 2002 UTC
# Line 28  open(MPS,"| $common::mpsindex -d $common Line 28  open(MPS,"| $common::mpsindex -d $common
28  print S $common::mps_header;  print S $common::mps_header;
29  print MPS $common::mps_header;  print MPS $common::mps_header;
30    
31    #--------------------------------------------------------------------
32    # init array in_mps_header for config checks later
33    
34    my %in_mps_header;
35    foreach (split(/\n/,$common::mps_header)) {
36            if (/^F /) {
37                    my (undef,$isis,$mps,undef) = split(/ /,$_,4);
38                    $in_mps_header{$mps}=$isis;
39            }
40    }
41    require "./search/config.pm";
42    
43    #--------------------------------------------------------------------
44  #  #
45  # expand(nr,"space separated string");  # expand(nr,"space separated string");
46  #  #
47    
48  sub expand {  sub expand {
49          my $nr = shift @_;          my $nr = shift @_;
50            die "$nr is not in mps_header" if (!$in_mps_header{$nr});
51          my $out = "";          my $out = "";
52          while (my $fld = c_852_iso(shift @_)) {          while (my $fld = c_852_iso(shift @_)) {
53                  my @words=split(/\s+/,$fld);                  my @words=split(/\s+/,$fld);
# Line 50  sub expand { Line 64  sub expand {
64    
65  #--------------------------------------------------------------------  #--------------------------------------------------------------------
66    
 ################### ERASE###############3  
   
 # expand sub-fileds from ISIS field  
 # (^a.....^b....)  
 my %data;       # FIX  
 sub ex_sf {  
         %data = ();  
         my $in = $_[0];  
         if (my $tmp = $in) {  
 #               $tmp =~ tr/џ/ƾ/; # ISIS -> iso-8859-2  
                 $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/;  
                 if ($in =~ m/^\^/) {  
                         my @sub = split(/\^/,$in);  
                         foreach my $fld (@sub) {  
                                 $data{$1} = $2 if ($fld =~ m/^(\w+)(.+)$/)  
                         }  
                 } else {  
                         $data{all} = $in."<-- iz polja bez podpolja";  
                 }  
         }  
 }  
   
 # dump all sub-fields  
 sub all_sf {  
         my $nr = shift @_;  
         my $out="";  
         foreach my $k (sort keys %data) {  
                 $out.=expand($nr,$data{$k});  
         }  
         return $out;  
 }  
   
 sub all_sf_r {  
         my $nr = shift @_;  
         my $out="";  
         foreach my $k (sort {$b cmp $a} keys %data) {  
                 $out.=expand($nr,$data{$k});  
         }  
         return $out;  
 }  
   
 sub all_sf2bib {  
         my $nr = shift @_;  
         my $max_in_line=shift @_ || 0;  
         my $sep = shift @_ || ' ';  
         my $out;  
         my $i=0;  
         my $bib = "";  
         foreach my $k (sort keys %data) {  
                 if ($out) {  
                         $out.= $sep.$data{$k};  
                 } else {  
                         $out = $data{$k};  
                 }  
                 $i++;  
                 if ($i == $max_in_line) {  
                         $bib .= $nr." ".$out."\n" if ($out);  
                         $i=0;  
                         $out="";  
                 }  
         }  
         $bib .= $nr." ".$out."\n" if ($out);  
         return $bib;  
 }  
   
 sub all_sf2bib_r {  
         my $nr = shift @_;  
         my $max_in_line=shift @_ || 0;  
         my $sep = shift @_ || ' ';  
         my $out;  
         my $i=0;  
         my $bib = "";  
         foreach my $k (sort {$b cmp $a} keys %data) {  
                 if ($out) {  
                         $out.= $sep.$data{$k};  
                 } else {  
                         $out = $data{$k};  
                 }  
                 $i++;  
                 if ($i == $max_in_line) {  
                         $bib .= $nr." ".$out."\n" if ($out);  
                         $i=0;  
                         $out="";  
                 }  
         }  
         $bib .= $nr." ".$out."\n" if ($out);  
         return $bib;  
 }  
   
 #--------------------------------------------------------------------  
   
67  sub c_852_iso {  sub c_852_iso {
68          my $tmp = $_[0];          my $tmp = $_[0];
69          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/ if ($tmp);          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/ if ($tmp);
# Line 157  sub c_852_czs { Line 80  sub c_852_czs {
80    
81  #--------------------------------------------------------------------  #--------------------------------------------------------------------
82    
83  # $mps .= sf_to_mps($subfiled_hash,"subfields",mps_id);  # $mps .= sf_to_mps("subfields",$subfiled_hash)
84  #  #
85  # subfields options:  # subfields options:
86  #       * - all (no sort)  #       * - all (no sort)
# Line 188  sub subfields_str_2_arr { Line 111  sub subfields_str_2_arr {
111    
112  sub sf_to_mps {  sub sf_to_mps {
113          my ($sf_hash,$subfields,$mps_id) = @_;          my ($sf_hash,$subfields,$mps_id) = @_;
114            die "$mps_id is not in mps_header" if (!$in_mps_header{$mps_id});
115          my $out="";          my $out="";
116          my @sf_arr = subfields_str_2_arr($subfields,$sf_hash);          my @sf_arr = subfields_str_2_arr($subfields,$sf_hash);
117    
# Line 207  sub isis_to_mps { Line 131  sub isis_to_mps {
131          my $mps_id = shift @_ || die;          my $mps_id = shift @_ || die;
132          my $subfields = shift @_;          my $subfields = shift @_;
133    
134            die "$mps_id is not in mps_header" if (!$in_mps_header{$mps_id});
135    
136          my $i=0;          my $i=0;
137          my $out = "";          my $out = "";
138    
# Line 250  sub isis_to_bib { Line 176  sub isis_to_bib {
176          my $group_sort = shift @_ || '';          my $group_sort = shift @_ || '';
177          my $sep = shift @_ || ' ';          my $sep = shift @_ || ' ';
178    
179            my $fld = $bib_id; $fld =~ s/^%//;
180            die "$fld is not in FieldNames" if (!$default::FieldNames{$fld});
181    
182          my $i=0;          my $i=0;
183    
184          my $bib="";          my $bib="";
# Line 342  sub isis_sf { Line 271  sub isis_sf {
271  }  }
272    
273  #--------------------------------------------------------------------  #--------------------------------------------------------------------
 #--------------------------------------------------------------------  
   
274    
275  my $last_tell=0;  my $last_tell=0;
276    
# Line 420  foreach my $isis_db (@isis_dbs) { Line 347  foreach my $isis_db (@isis_dbs) {
347                  $book .= ". ".$sf->{c} if ($sf->{c});                  $book .= ". ".$sf->{c} if ($sf->{c});
348                  $book .= " / ".$sf->{x} if ($sf->{x});                  $book .= " / ".$sf->{x} if ($sf->{x});
349                  $book .= " ; ".$sf->{y} if ($sf->{y});                  $book .= " ; ".$sf->{y} if ($sf->{y});
350                  $bib .= "%200 $book\n" if ($book);                  $bib .= "%200+ $book\n" if ($book);
351    
352                  $mps .= isis_to_mps($row,'200',2,"akcde");                  $mps .= isis_to_mps($row,'200',2,"akcde");
353                  $mps .= isis_to_mps($row,'532',2);                  $mps .= isis_to_mps($row,'532',2);
# Line 432  foreach my $isis_db (@isis_dbs) { Line 359  foreach my $isis_db (@isis_dbs) {
359                  $mps .= isis_to_mps($row,'233',2,"ae");                  $mps .= isis_to_mps($row,'233',2,"ae");
360    
361    
362                  $bib .= "%sv ".isis_sf($row,'230','v').                  my $tmp;
363                    $tmp =  isis_sf($row,'230','v').
364                          isis_sf($row,'230','a',' : ').                          isis_sf($row,'230','a',' : ').
365                          isis_sf($row,'250',undef,'. - ').                          isis_sf($row,'250',undef,'. - ').
366                          isis_sf($row,'260',undef,'. - ').                          isis_sf($row,'260',undef,'. - ').
367                          isis_sf($row,'290',undef,'<br>ISBN ').                          isis_sf($row,'290',undef,'<br>ISBN ');
368                          "\n";                  $bib .= "%sv $tmp\n" if ($tmp);
369                  $bib .= "%sv ".isis_sf($row,'231','v','<br>').          
370                    $tmp =  isis_sf($row,'231','v','<br>').
371                          isis_sf($row,'231','a',' : ').                          isis_sf($row,'231','a',' : ').
372                          isis_sf($row,'251',undef,'. - ').                          isis_sf($row,'251',undef,'. - ').
373                          isis_sf($row,'261',undef,'. - ').                          isis_sf($row,'261',undef,'. - ').
374                          isis_sf($row,'291',undef,'<br>ISBN ').                          isis_sf($row,'291',undef,'<br>ISBN ');
375                          "\n";                  $bib .= "%sv $tmp\n" if ($tmp);
376                  $bib .= "%sv ".isis_sf($row,'232','v','<br>').                  
377                    $tmp =  isis_sf($row,'232','v','<br>').
378                          isis_sf($row,'232','a',' : ').                          isis_sf($row,'232','a',' : ').
379                          isis_sf($row,'252',undef,'. - ').                          isis_sf($row,'252',undef,'. - ').
380                          isis_sf($row,'262',undef,'. - ').                          isis_sf($row,'262',undef,'. - ').
381                          isis_sf($row,'292',undef,'<br>ISBN ').                          isis_sf($row,'292',undef,'<br>ISBN ');
382                          "\n";                  $bib .= "%sv $tmp\n" if ($tmp);
383                  $bib .= "%sv ".isis_sf($row,'233','v','<br>').  
384                    $tmp =  isis_sf($row,'233','v','<br>').
385                          isis_sf($row,'233','a',' : ').                          isis_sf($row,'233','a',' : ').
386                          isis_sf($row,'253',undef,'. - ').                          isis_sf($row,'253',undef,'. - ').
387                          isis_sf($row,'263',undef,'. - ').                          isis_sf($row,'263',undef,'. - ').
388                          isis_sf($row,'293',undef,'<br>ISBN ').                          isis_sf($row,'293',undef,'<br>ISBN ');
                         "\n";  
389    
390                  $mps .= isis_to_mps($row,'270',2);                  $mps .= isis_to_mps($row,'270',2);
391                  $mps .= isis_to_mps($row,'271',2);                  $mps .= isis_to_mps($row,'271',2);
# Line 559  foreach my $isis_db (@isis_dbs) { Line 489  foreach my $isis_db (@isis_dbs) {
489                  # headline                  # headline
490                  if ($headline) {                  if ($headline) {
491                          $headline .= " [".$row->{mfn}."]";      ## debug MFN!                          $headline .= " [".$row->{mfn}."]";      ## debug MFN!
492                            $headline =~ s/&/&and;/g;
493                            $headline =~ s/</&lt;/g;
494                            $headline =~ s/>/&gt;/g;
495                          $mps .= "H ".c_852_iso($headline)."\n";                          $mps .= "H ".c_852_iso($headline)."\n";
496                  } else {                  } else {
497                          $mps .= "H nepoznato\n";                          $mps .= "H nepoznato\n";
# Line 573  foreach my $isis_db (@isis_dbs) { Line 506  foreach my $isis_db (@isis_dbs) {
506  #}  #}
507    
508                  print R c_852_iso($bib);                  print R c_852_iso($bib);
509                  print R "%perl ".Dumper($row)."\n";  
510                    # check if all fields are defined
511                    foreach (split(/\n/,$bib)) {
512                            if (/^%(\w+)\s/ && !$default::FieldNames{$1}) {
513                                    die "field $1 used but not in FieldNames";
514                            }
515                    }
516    
517    #               print R "%perl ".Dumper($row)."\n";
518    
519                  $mps .= "T document text/plain ".(tell(R) - $last_tell)." $dir/bib $last_tell ".tell(R)."\n";                  $mps .= "T document text/plain ".(tell(R) - $last_tell)." $dir/bib $last_tell ".tell(R)."\n";
520                  $last_tell=tell(R);                  $last_tell=tell(R);

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.26