/[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.8 by dpavlin, Sun Jun 16 19:39:42 2002 UTC revision 1.18 by dpavlin, Wed Jul 17 16:55:24 2002 UTC
# Line 8  use common; Line 8  use common;
8    
9  my %opts;  my %opts;
10    
11  getopt('dm', \%opts);  getopts('d:m:q', \%opts);
12    
13  die "usage: $0 -d [database_dir] -m [database1,database2] " if (! %opts);  die "usage: $0 -d [database_dir] -m [database1,database2] " if (! %opts);
14    
# Line 41  foreach (split(/\n/,$common::mps_header) Line 41  foreach (split(/\n/,$common::mps_header)
41  require "./search/config.pm";  require "./search/config.pm";
42    
43  #--------------------------------------------------------------------  #--------------------------------------------------------------------
44    # read database configuration, store database names
45    open(CF,$common::database_cf) || die "$common::database_cf: $!";
46    my %DatabaseDescriptions;
47    while(<CF>) {
48            chomp;
49            if (/^database-name:([^=]+)=(.*)$/) {
50                    my ($db_name,$db_desc) = ($1,$2);
51                    $db_desc=~s/^##\w+##//g;
52                    # c_iso_852 is a cludge so that output format would be
53                    # correct 8859-2 again...
54                    $DatabaseDescriptions{$db_name}=c_iso_852($db_desc);
55            }
56    }
57    close(CF);
58    
59    #--------------------------------------------------------------------
60  #  #
61  # expand(nr,"space separated string");  # expand(nr,"space separated string");
62  #  #
# Line 70  sub c_852_iso { Line 86  sub c_852_iso {
86          return $tmp;          return $tmp;
87  }  }
88    
89    sub c_iso_852 {
90            my $tmp = $_[0];
91            $tmp =~ tr/ܫꔼȺ̪㍐슂ٝ// if ($tmp);
92            return $tmp;
93    }
94    
95  sub c_852_czs {  sub c_852_czs {
96          my $tmp = $_[0];          my $tmp = $_[0];
97          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/;          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/;
# Line 305  foreach my $isis_db (@isis_dbs) { Line 327  foreach my $isis_db (@isis_dbs) {
327          my $row = OpenIsis::read( $db, $row_id );          my $row = OpenIsis::read( $db, $row_id );
328          if (my $tmp = $row->{'200'}->[0]) {          if (my $tmp = $row->{'200'}->[0]) {
329    
330                  my $bib = "%MFN $row->{mfn}\n";                  my $bib;
331                  my $mps = "W $row->{mfn} 14\n";                  my $mps = "W $row->{mfn} 14\n";
332    
333                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);
334                  if ($pcnt != $last_pcnt) {                  if ($pcnt != $last_pcnt) {
335                          printf MPS ("M %5d / %5d -- %-2d %%\n",$row->{mfn},$max_rowid,$pcnt);                          printf MPS ("M %5d / %5d -- %-2d %%\n",$row->{mfn},$max_rowid,$pcnt) if (! $opts{q});
336                          $last_pcnt = $pcnt;                          $last_pcnt = $pcnt;
337                  }                  }
338    
339                  my $headline;                  my $headline;
340                  $headline .= isis_sf($row,'200','a',"'");                  $headline .= isis_sf($row,'200','a');
341                  $headline .= isis_sf($row,'200','e'," : ","'");                  $headline .= isis_sf($row,'200','e'," : ");
342                    $headline .= isis_sf($row,'200','f'," / ");
343                    $headline .= isis_sf($row,'210','d'," , ");
344    
345                    # remove newlines, compress spaces
346                    $headline =~ s/[\n\r]//g;
347                    $headline =~ s/^\s+//g;
348                    $headline =~ s/\s+$//g;
349    
350                  # author                  # author
351                  $bib .= isis_to_bib($row,'700','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'700','%700+','ab',undef,'>',', ');
352                  $bib .= isis_to_bib($row,'701','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','ab',undef,'>',', ');
353                  $bib .= isis_to_bib($row,'710','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','cd',undef,'>',', ');
354                  $bib .= isis_to_bib($row,'711','%700+','*',2,'<');  
355                  $bib .= isis_to_bib($row,'503','%700+','*',2,'<');                  my $tmp;
356                    $tmp = isis_sf($row,'710','abc', '', '', (' : ',', '));
357                    $tmp .= isis_sf($row,'710','dfe', ' (', ')', ('', ' ; ',' ; '));
358                    $bib .= "%700+ $tmp\n" if ($tmp);
359    
360                    $tmp = isis_sf($row,'711','abc', '', '', (' : ',', '));
361                    $tmp .= isis_sf($row,'711','dfe', ' (', ')', ('', ' ; ',' ; '));
362                    $bib .= "%700+ $tmp\n" if ($tmp);
363    
364                    $bib .= isis_to_bib($row,'503','%700+','ab',undef,'>',', ');
365    
366                  $mps .= isis_to_mps($row,'700',1);                  $mps .= isis_to_mps($row,'700',1);
367                  $mps .= isis_to_mps($row,'701',1);                  $mps .= isis_to_mps($row,'701',1);
# Line 359  foreach my $isis_db (@isis_dbs) { Line 397  foreach my $isis_db (@isis_dbs) {
397                  $mps .= isis_to_mps($row,'233',2,"ae");                  $mps .= isis_to_mps($row,'233',2,"ae");
398    
399    
                 my $tmp;  
400                  $tmp =  isis_sf($row,'230','v').                  $tmp =  isis_sf($row,'230','v').
401                          isis_sf($row,'230','a',' : ').                          isis_sf($row,'230','a',' : ').
402                          isis_sf($row,'250',undef,'. - ').                          isis_sf($row,'250',undef,'. - ').
# Line 392  foreach my $isis_db (@isis_dbs) { Line 429  foreach my $isis_db (@isis_dbs) {
429                  $mps .= isis_to_mps($row,'272',2);                  $mps .= isis_to_mps($row,'272',2);
430                  $mps .= isis_to_mps($row,'273',2);                  $mps .= isis_to_mps($row,'273',2);
431    
                 $headline .= isis_sf($row,'700','b'," ");  
                 $headline .= isis_sf($row,'700','a'," ");  
   
432                  # izdavac                  # izdavac
433                  $mps .= isis_to_mps($row,'210',3);                  $mps .= isis_to_mps($row,'210',3);
434                  $mps .= isis_to_mps($row,'250',3);                  $mps .= isis_to_mps($row,'250',3);
# Line 413  foreach my $isis_db (@isis_dbs) { Line 447  foreach my $isis_db (@isis_dbs) {
447                  if (my $year = isis_sf($row,'210','d')) {                  if (my $year = isis_sf($row,'210','d')) {
448                          $year =~ s/^\s*cop\.*\s*//i;                          $year =~ s/^\s*cop\.*\s*//i;
449                          $year =~ s/[\[\]]*//g;                          $year =~ s/[\[\]]*//g;
450                            $year =~ s/[\n\r]//g;   # remove cr
451                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);
                         $headline .= " ($year)";  
452                  }                  }
453    
454                  $mps .= isis_to_mps($row,'215',15);                  $mps .= isis_to_mps($row,'215',15);
# Line 448  foreach my $isis_db (@isis_dbs) { Line 482  foreach my $isis_db (@isis_dbs) {
482                  $bib .= isis_to_bib($row,'610','%610');                  $bib .= isis_to_bib($row,'610','%610');
483                  $mps .= isis_to_mps($row,'610',8);                  $mps .= isis_to_mps($row,'610',8);
484    
485                  $bib .= isis_to_bib($row,'675','%675+');                  $bib .= isis_to_bib($row,'675','%675+','a');
486                  $mps .= isis_to_mps($row,'675',9);                  $mps .= isis_to_mps($row,'675',9);
487                  $bib .= isis_to_bib($row,'686','%675+');                  $bib .= isis_to_bib($row,'686','%675+','a');
488                  $mps .= isis_to_mps($row,'686',10);                  $mps .= isis_to_mps($row,'686',10);
489    
490                  $bib .= isis_to_bib($row,'990','%990');                  $bib .= isis_to_bib($row,'990','%990');
# Line 459  foreach my $isis_db (@isis_dbs) { Line 493  foreach my $isis_db (@isis_dbs) {
493                  $bib .= isis_to_bib($row,'991','%991');                  $bib .= isis_to_bib($row,'991','%991');
494                  $mps .= isis_to_mps($row,'991',12);                  $mps .= isis_to_mps($row,'991',12);
495    
496                  sub store_isn {                  # Jezik
497                          if (my $isn = shift @_) {                  $bib .= isis_to_bib($row,'101','%101');
498                                  my $nr = shift @_;                  $mps .= isis_to_mps($row,'101',16);
499                                  my $tag = shift @_;                  # Pismo
500                    $bib .= isis_to_bib($row,'998','%101', 'a');
501    
502                    sub isis_isn_to_mps {
503                            my $row = shift @_ || die;
504                            my $isis_id = shift @_ || die;
505                            my $nr = shift @_ || die;
506                            my $i=0;
507                            my $mps='';
508                            while (my $isn=$row->{$isis_id}->[$i]) {
509                                  $isn =~ s/ +//g;        # remove spaces                                  $isn =~ s/ +//g;        # remove spaces
510                                    $isn =~ s/[\n\r]//g;    # remove cr
511                                  $mps .= "W $isn $nr\n";                                  $mps .= "W $isn $nr\n";
                                 $bib .= "$tag $isn\n";  
512                                  if ($isn =~ s/-//g) {                                  if ($isn =~ s/-//g) {
513                                          $mps .= "W $isn $nr\n";                                          $mps .= "W $isn $nr\n";
514                                  }                                  }
515                                    $i++;
516                          }                          }
517                            return $mps;
518                  }                  }
519    
520                  # ISBN                  # ISBN
521                  store_isn($row->{10}->[0],13,'%ISBN');                  $bib .= isis_to_bib($row,'10','%ISBN');
522                  $mps .= isis_to_mps($row,'290',13);                  $mps .= isis_isn_to_mps($row,'10',13);
523                  $mps .= isis_to_mps($row,'291',13);                  $mps .= isis_isn_to_mps($row,'290',13);
524                  $mps .= isis_to_mps($row,'292',13);                  $mps .= isis_isn_to_mps($row,'291',13);
525                  $mps .= isis_to_mps($row,'293',13);                  $mps .= isis_isn_to_mps($row,'292',13);
526                    $mps .= isis_isn_to_mps($row,'293',13);
527    
528                  # ISSN                  # ISSN
529                  #store_isn($row->{11}->[0],14,'%ISSN');                  #store_isn($row->{11}->[0],14,'%ISSN');
530    
531                  $mps .= isis_to_mps($row,'532',1);                  $mps .= isis_to_mps($row,'532',1);
532    
533                  $bib .= isis_to_bib($row,'994','%994a','a');                  $bib .= '%knjiz '.$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}."\n";
   
534                  # headline                  # headline
535                  if ($headline) {                  if ($headline) {
536                          $headline .= " [".$row->{mfn}."]";      ## debug MFN!                          $headline .= " <i>(".$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}.")</i>";   ## debug MFN!
537                          $headline =~ s/&/&and;/g;                          $headline =~ s/&/&and;/g;
538                          $headline =~ s/</&lt;/g;                          $headline =~ s/</&lt;/g;
539                          $headline =~ s/>/&gt;/g;                          $headline =~ s/>/&gt;/g;

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

  ViewVC Help
Powered by ViewVC 1.1.26