/[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.5 by dpavlin, Sun Jun 16 15:45:44 2002 UTC revision 1.20 by dpavlin, Wed Jul 17 19:33:19 2002 UTC
# Line 3  Line 3 
3  use strict;  use strict;
4  use OpenIsis;  use OpenIsis;
5  use Getopt::Std;  use Getopt::Std;
6  #use Data::Dumper;  use Data::Dumper;
7  use common;  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 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    # 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  #  #
63    
64  sub expand {  sub expand {
65          my $nr = shift @_;          my $nr = shift @_;
66            die "$nr is not in mps_header" if (!$in_mps_header{$nr});
67          my $out = "";          my $out = "";
68          while (my $fld = c_852_iso(shift @_)) {          while (my $fld = c_852_iso(shift @_)) {
69                  my @words=split(/\s+/,$fld);                  my @words=split(/\s+/,$fld);
# Line 50  sub expand { Line 80  sub expand {
80    
81  #--------------------------------------------------------------------  #--------------------------------------------------------------------
82    
 ################### 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;  
 }  
   
 #--------------------------------------------------------------------  
   
83  sub c_852_iso {  sub c_852_iso {
84          my $tmp = $_[0];          my $tmp = $_[0];
85          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/ if ($tmp);          $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/ if ($tmp);
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 157  sub c_852_czs { Line 102  sub c_852_czs {
102    
103  #--------------------------------------------------------------------  #--------------------------------------------------------------------
104    
105  # $mps .= sf_to_mps($subfiled_hash,"subfields",mps_id);  # $mps .= sf_to_mps("subfields",$subfiled_hash)
106  #  #
107  # subfields options:  # subfields options:
108  #       * - all (no sort)  #       * - all (no sort)
# Line 188  sub subfields_str_2_arr { Line 133  sub subfields_str_2_arr {
133    
134  sub sf_to_mps {  sub sf_to_mps {
135          my ($sf_hash,$subfields,$mps_id) = @_;          my ($sf_hash,$subfields,$mps_id) = @_;
136            die "$mps_id is not in mps_header" if (!$in_mps_header{$mps_id});
137          my $out="";          my $out="";
138          my @sf_arr = subfields_str_2_arr($subfields,$sf_hash);          my @sf_arr = subfields_str_2_arr($subfields,$sf_hash);
139    
# Line 207  sub isis_to_mps { Line 153  sub isis_to_mps {
153          my $mps_id = shift @_ || die;          my $mps_id = shift @_ || die;
154          my $subfields = shift @_;          my $subfields = shift @_;
155    
156            die "$mps_id is not in mps_header" if (!$in_mps_header{$mps_id});
157    
158          my $i=0;          my $i=0;
159          my $out = "";          my $out = "";
160    
# Line 250  sub isis_to_bib { Line 198  sub isis_to_bib {
198          my $group_sort = shift @_ || '';          my $group_sort = shift @_ || '';
199          my $sep = shift @_ || ' ';          my $sep = shift @_ || ' ';
200    
201            my $fld = $bib_id; $fld =~ s/^%//;
202            die "$fld is not in FieldNames" if (!$default::FieldNames{$fld});
203    
204          my $i=0;          my $i=0;
205    
206          my $bib="";          my $bib="";
# Line 307  sub isis_to_bib { Line 258  sub isis_to_bib {
258  sub isis_sf {  sub isis_sf {
259          my $row = shift @_;          my $row = shift @_;
260          my $isis_id = shift @_;          my $isis_id = shift @_;
261          my $subfield = shift @_ || 'a';          my $subfield = shift @_;
262          my $prefix = shift @_ || '';          my $prefix = shift @_ || '';
263          my $postfix = shift @_ || '';          my $postfix = shift @_ || '';
264    
# Line 315  sub isis_sf { Line 266  sub isis_sf {
266    
267          if ($row->{$isis_id}->[0]) {          if ($row->{$isis_id}->[0]) {
268                  my $sf = OpenIsis::subfields($row->{$isis_id}->[0]);                  my $sf = OpenIsis::subfields($row->{$isis_id}->[0]);
269                  if (length($subfield) == 1) {                  if (! defined $subfield || length($subfield) == 0) {
270                            # subfield list undef, empty or no defined subfields for this record
271                            return $prefix . $row->{$isis_id}->[0] . $postfix;
272                    } elsif (length($subfield) == 1) {
273                          if ($sf->{$subfield}) {                          if ($sf->{$subfield}) {
274                                  return $prefix . $sf->{$subfield} . $postfix;                                  return $prefix . $sf->{$subfield} . $postfix;
275                          } else {                          } else {
# Line 339  sub isis_sf { Line 293  sub isis_sf {
293  }  }
294    
295  #--------------------------------------------------------------------  #--------------------------------------------------------------------
 #--------------------------------------------------------------------  
   
296    
297  my $last_tell=0;  my $last_tell=0;
298    
299  my @isis_dbs = ( '.' ); # use dirname as database name  my @isis_dirs = ( '.' );        # use dirname as database name
300    
301  if ($opts{m}) {  if ($opts{m}) {
302          @isis_dbs = split(/,/,$opts{m});          @isis_dirs = split(/,/,$opts{m});
303  }  }
304    
305  foreach my $db_name (@isis_dbs) {  my @isis_dbs;
306    
307    print MPS "M reading ISIS from $db_dir/$db_name/LIBRI...\n";  foreach (@isis_dirs) {
308            if (-e "$common::isis_data/$db_dir/$_/LIBRI") {
309                    push @isis_dbs,"$common::isis_data/$db_dir/$_/LIBRI/LIBRI";
310            }
311            if (-e "$common::isis_data/$db_dir/$_/PERI") {
312                    push @isis_dbs,"$common::isis_data/$db_dir/$_/PERI/PERI";
313            }
314            if (-e "$common::isis_data/$db_dir/$_/AMS") {
315                    push @isis_dbs,"$common::isis_data/$db_dir/$_/AMS/AMS";
316            }
317            if (-e "$common::isis_data/$db_dir/$_/ARTI") {
318    #               push @isis_dbs,"$common::isis_data/$db_dir/$_/ARTI/ARTI";
319            }
320    }
321    
322    my $db = OpenIsis::open( "$common::isis_data/$db_dir/$db_name/LIBRI/LIBRI" );  foreach my $isis_db (@isis_dbs) {
323    
324      print MPS "M reading ISIS from '$isis_db'...\n";
325    
326      my $db = OpenIsis::open( "$isis_db" );
327    
328      if (! defined $db) {
329            die "can't open '$isis_db'";
330      }
331    
332      my $tip = $isis_db; $tip =~ s/^.+?\/([^\/]+)$/$1/;
333      if (defined $default::tip{$tip}) {
334            $tip=$default::tip{$tip};
335      } elsif ($tip eq "AMS") {
336            $tip=$default::tip{'LIBRI'};
337      } else {
338            die "can't find tip for database '$isis_db'";
339      }
340      $tip = c_iso_852($tip);
341    
342    my $max_rowid = OpenIsis::maxRowid( $db );    my $max_rowid = OpenIsis::maxRowid( $db );
343    
# Line 364  foreach my $db_name (@isis_dbs) { Line 347  foreach my $db_name (@isis_dbs) {
347          my $row = OpenIsis::read( $db, $row_id );          my $row = OpenIsis::read( $db, $row_id );
348          if (my $tmp = $row->{'200'}->[0]) {          if (my $tmp = $row->{'200'}->[0]) {
349    
350                  my $bib = "%MFN $row->{mfn}\n";                  my $bib;
351                  my $mps;                  my $mps = "W $row->{mfn} 14\n";
352    
353                    # tip gradje
354                    $mps .= "W ".c_852_czs($tip)." 17\n";
355                    $bib .= "%tip $tip\n";
356    
357                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);                  my $pcnt = int($row->{mfn} * 100 / $max_rowid);
358                  if ($pcnt != $last_pcnt) {                  if ($pcnt != $last_pcnt) {
359                          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});
360                          $last_pcnt = $pcnt;                          $last_pcnt = $pcnt;
361                  }                  }
362    
363                  my $headline;                  my $headline;
364                  $headline .= isis_sf($row,'200','a',"'");                  $headline .= isis_sf($row,'200','a');
365                  $headline .= isis_sf($row,'200','e'," : ","'");                  $headline .= isis_sf($row,'200','e'," : ");
366                    $headline .= isis_sf($row,'200','f'," / ");
367                    $headline .= isis_sf($row,'210','d'," , ");
368    
369                    # remove newlines, compress spaces
370                    $headline =~ s/[\n\r]//g;
371                    $headline =~ s/^\s+//g;
372                    $headline =~ s/\s+$//g;
373    
374                  # author                  # author
375                  $bib .= isis_to_bib($row,'700','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'700','%700+','ab',undef,'>',', ');
376                  $bib .= isis_to_bib($row,'701','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','ab',undef,'>',', ');
377                  $bib .= isis_to_bib($row,'710','%700+','*',2,'<');                  $bib .= isis_to_bib($row,'701','%700+','cd',undef,'>',', ');
378                  $bib .= isis_to_bib($row,'711','%700+','*',2,'<');  
379                  $bib .= isis_to_bib($row,'503','%700+','*',2,'<');                  my $tmp;
380                    $tmp = isis_sf($row,'710','abc', '', '', (' : ',', '));
381                    $tmp .= isis_sf($row,'710','dfe', ' (', ')', ('', ' ; ',' ; '));
382                    $bib .= "%700+ $tmp\n" if ($tmp);
383    
384                    $tmp = isis_sf($row,'711','abc', '', '', (' : ',', '));
385                    $tmp .= isis_sf($row,'711','dfe', ' (', ')', ('', ' ; ',' ; '));
386                    $bib .= "%700+ $tmp\n" if ($tmp);
387    
388                    $bib .= isis_to_bib($row,'503','%700+','ab',undef,'>',', ');
389    
390                  $mps .= isis_to_mps($row,'700',1);                  $mps .= isis_to_mps($row,'700',1);
391                  $mps .= isis_to_mps($row,'701',1);                  $mps .= isis_to_mps($row,'701',1);
# Line 390  foreach my $db_name (@isis_dbs) { Line 393  foreach my $db_name (@isis_dbs) {
393                  $mps .= isis_to_mps($row,'711',1);                  $mps .= isis_to_mps($row,'711',1);
394                  $mps .= isis_to_mps($row,'503',1);                  $mps .= isis_to_mps($row,'503',1);
395                  $mps .= isis_to_mps($row,'702',1);                  $mps .= isis_to_mps($row,'702',1);
396                    $mps .= isis_to_mps($row,'200',1,"fg");
397    
398                  $bib .= isis_to_bib($row,'205','%205');                  $bib .= isis_to_bib($row,'205','%205');
399    
# Line 405  foreach my $db_name (@isis_dbs) { Line 409  foreach my $db_name (@isis_dbs) {
409                  $book .= ". ".$sf->{c} if ($sf->{c});                  $book .= ". ".$sf->{c} if ($sf->{c});
410                  $book .= " / ".$sf->{x} if ($sf->{x});                  $book .= " / ".$sf->{x} if ($sf->{x});
411                  $book .= " ; ".$sf->{y} if ($sf->{y});                  $book .= " ; ".$sf->{y} if ($sf->{y});
412                  $bib .= "%200 $book\n" if ($book);                  $bib .= "%200+ $book\n" if ($book);
413    
414                  $mps .= isis_to_mps($row,'200',2,"akcde");                  $mps .= isis_to_mps($row,'200',2,"akcde");
415                  $mps .= isis_to_mps($row,'532',2);                  $mps .= isis_to_mps($row,'532',2);
416                  $mps .= isis_to_mps($row,'424',2);                  $mps .= isis_to_mps($row,'424',2);
417    
418                  $headline .= isis_sf($row,'700','b'," ");                  $mps .= isis_to_mps($row,'230',2,"ae");
419                  $headline .= isis_sf($row,'700','a'," ");                  $mps .= isis_to_mps($row,'231',2,"ae");
420                    $mps .= isis_to_mps($row,'232',2,"ae");
421                    $mps .= isis_to_mps($row,'233',2,"ae");
422    
423    
424                    $tmp =  isis_sf($row,'230','v').
425                            isis_sf($row,'230','a',' : ').
426                            isis_sf($row,'250',undef,'. - ').
427                            isis_sf($row,'260',undef,'. - ').
428                            isis_sf($row,'290',undef,'<br>ISBN ');
429                    $bib .= "%sv $tmp\n" if ($tmp);
430            
431                    $tmp =  isis_sf($row,'231','v','<br>').
432                            isis_sf($row,'231','a',' : ').
433                            isis_sf($row,'251',undef,'. - ').
434                            isis_sf($row,'261',undef,'. - ').
435                            isis_sf($row,'291',undef,'<br>ISBN ');
436                    $bib .= "%sv $tmp\n" if ($tmp);
437                    
438                    $tmp =  isis_sf($row,'232','v','<br>').
439                            isis_sf($row,'232','a',' : ').
440                            isis_sf($row,'252',undef,'. - ').
441                            isis_sf($row,'262',undef,'. - ').
442                            isis_sf($row,'292',undef,'<br>ISBN ');
443                    $bib .= "%sv $tmp\n" if ($tmp);
444    
445                    $tmp =  isis_sf($row,'233','v','<br>').
446                            isis_sf($row,'233','a',' : ').
447                            isis_sf($row,'253',undef,'. - ').
448                            isis_sf($row,'263',undef,'. - ').
449                            isis_sf($row,'293',undef,'<br>ISBN ');
450    
451                    $mps .= isis_to_mps($row,'270',2);
452                    $mps .= isis_to_mps($row,'271',2);
453                    $mps .= isis_to_mps($row,'272',2);
454                    $mps .= isis_to_mps($row,'273',2);
455    
456                  # izdavac                  # izdavac
457                  $mps .= isis_to_mps($row,'210',3);                  $mps .= isis_to_mps($row,'210',3);
458                    $mps .= isis_to_mps($row,'250',3);
459                    $mps .= isis_to_mps($row,'251',3);
460                    $mps .= isis_to_mps($row,'252',3);
461                    $mps .= isis_to_mps($row,'253',3);
462  #               if (my $sf = OpenIsis::subfields($row->{'210'}->[0])) {  #               if (my $sf = OpenIsis::subfields($row->{'210'}->[0])) {
463  #                       my $tmp;  #                       my $tmp;
464  #                       $tmp .= $sf->{a} if ($sf->{a});  #                       $tmp .= $sf->{a} if ($sf->{a});
# Line 423  foreach my $db_name (@isis_dbs) { Line 466  foreach my $db_name (@isis_dbs) {
466  #                       $tmp .= ", ".$sf->{d} if ($sf->{d});  #                       $tmp .= ", ".$sf->{d} if ($sf->{d});
467  #                       $bib .= "%210 $tmp\n" if ($tmp);  #                       $bib .= "%210 $tmp\n" if ($tmp);
468  #               }  #               }
469                  $bib .= "%210 ".isis_sf($row,'210','acd', '','', ('',' : ',', ') )."\n";                  $bib .= "%210+ ".isis_sf($row,'210','acd', '','', ('',' : ',', ') )."\n";
470    
471                  if (my $year = isis_sf($row,'210','d')) {                  if (my $year = isis_sf($row,'210','d')) {
472                          $year =~ s/^\s*cop\.*\s*//i;                          $year =~ s/^\s*cop\.*\s*//i;
473                          $year =~ s/[\[\]]*//g;                          $year =~ s/[\[\]]*//g;
474                            $year =~ s/[\n\r]//g;   # remove cr
475                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);                          $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/);
                         $headline .= " ($year)";  
476                  }                  }
477    
478                  $bib .= isis_to_bib($row,'215','%215', '*', undef, undef, ', ');                  $mps .= isis_to_mps($row,'215',15);
479                    $mps .= isis_to_mps($row,'260',15);
480                    $mps .= isis_to_mps($row,'261',15);
481                    $mps .= isis_to_mps($row,'262',15);
482                    $mps .= isis_to_mps($row,'263',15);
483                    $bib .= isis_to_bib($row,'215','%215+', '*', undef, undef, ', ');
484    
485  #               $bib .= isis_to_bib($row,'225','%225', 'aehivw');  #               $bib .= isis_to_bib($row,'225','%225', 'aehivw');
486                  $bib .= "%225 ".isis_sf($row,'225','aevhiw', '(',')', ('',' : ',' ; ','. ',', ',' ; '))."\n";                  $bib .= "%225 ".isis_sf($row,'225','aevhiw', '(',')', ('',' : ',' ; ','. ',', ',' ; '))."\n";
# Line 444  foreach my $db_name (@isis_dbs) { Line 492  foreach my $db_name (@isis_dbs) {
492                  $mps .= isis_to_mps($row,'300',5);                  $mps .= isis_to_mps($row,'300',5);
493                  $mps .= isis_to_mps($row,'320',5);                  $mps .= isis_to_mps($row,'320',5);
494                  $mps .= isis_to_mps($row,'327',5);                  $mps .= isis_to_mps($row,'327',5);
495                    $mps .= isis_to_mps($row,'280',5);
496                    $mps .= isis_to_mps($row,'281',5);
497                    $mps .= isis_to_mps($row,'282',5);
498                    $mps .= isis_to_mps($row,'283',5);
499    
500                  $bib .= isis_to_bib($row,'330','%330');                  $bib .= isis_to_bib($row,'330','%330');
501                  $mps .= isis_to_mps($row,'330',6);                  $mps .= isis_to_mps($row,'330',6);
# Line 454  foreach my $db_name (@isis_dbs) { Line 506  foreach my $db_name (@isis_dbs) {
506                  $bib .= isis_to_bib($row,'610','%610');                  $bib .= isis_to_bib($row,'610','%610');
507                  $mps .= isis_to_mps($row,'610',8);                  $mps .= isis_to_mps($row,'610',8);
508    
509                  $bib .= isis_to_bib($row,'675','%675+');                  $bib .= isis_to_bib($row,'675','%675+','a');
510                  $mps .= isis_to_mps($row,'675',9);                  $mps .= isis_to_mps($row,'675',9);
511                  $bib .= isis_to_bib($row,'686','%675+');                  $bib .= isis_to_bib($row,'686','%675+','a');
512                  $mps .= isis_to_mps($row,'686',10);                  $mps .= isis_to_mps($row,'686',10);
513    
514                  $bib .= isis_to_bib($row,'990','%990');                  $bib .= isis_to_bib($row,'990','%990');
# Line 465  foreach my $db_name (@isis_dbs) { Line 517  foreach my $db_name (@isis_dbs) {
517                  $bib .= isis_to_bib($row,'991','%991');                  $bib .= isis_to_bib($row,'991','%991');
518                  $mps .= isis_to_mps($row,'991',12);                  $mps .= isis_to_mps($row,'991',12);
519    
520                  # ISBN                  # Jezik
521                  if (my $isbn = $row->{10}->[0]) {                  $bib .= isis_to_bib($row,'101','%101');
522                          $isbn =~ s/ +//g;       # remove spaces                  $mps .= isis_to_mps($row,'101',16);
523                          $mps .= "W $isbn 13\n";                  # Pismo
524                          $bib .= "%ISBN $isbn\n";                  $bib .= isis_to_bib($row,'998','%101', 'a');
525                          $isbn =~ s/-//g;  
526                          $mps .= "W $isbn 13\n";                  sub isis_isn_to_mps {
527                            my $row = shift @_ || die;
528                            my $isis_id = shift @_ || die;
529                            my $nr = shift @_ || die;
530                            my $i=0;
531                            my $mps='';
532                            while (my $isn=$row->{$isis_id}->[$i]) {
533                                    $isn =~ s/ +//g;        # remove spaces
534                                    $isn =~ s/[\n\r]//g;    # remove cr
535                                    $mps .= "W $isn $nr\n";
536                                    if ($isn =~ s/-//g) {
537                                            $mps .= "W $isn $nr\n";
538                                    }
539                                    $i++;
540                            }
541                            return $mps;
542                  }                  }
543                  $mps .= isis_to_mps($row,'10',12);  
544                    # ISBN
545                    $bib .= isis_to_bib($row,'10','%ISBN');
546                    $mps .= isis_isn_to_mps($row,'10',13);
547                    $mps .= isis_isn_to_mps($row,'290',13);
548                    $mps .= isis_isn_to_mps($row,'291',13);
549                    $mps .= isis_isn_to_mps($row,'292',13);
550                    $mps .= isis_isn_to_mps($row,'293',13);
551    
552                    # ISSN
553                    $bib .= isis_to_bib($row,'11','%ISSN');
554                    $mps .= isis_isn_to_mps($row,'11',13);
555    
556                  $mps .= isis_to_mps($row,'532',1);                  $mps .= isis_to_mps($row,'532',1);
557    
558                  $bib .= isis_to_bib($row,'994','%994a','a');                  # Casopisi
559                    $tmp = isis_to_bib($row,'326','%326');
560                    $tmp =~ s/g1/godinjak/;
561                    $tmp =~ s/g6/dvomjesenik/;
562                    $tmp =~ s/10/godinje 10 brojeva/;
563                    $tmp =~ s/m1/mjesenik/;
564                    $tmp =~ s/m2/polumjesenik/;
565                    $tmp =~ s/nr/neredovito/;
566                    $tmp =~ s/g4/etiri puta godinje/;
567                    $bib .= c_iso_852($tmp);
568                    $bib .= isis_to_bib($row,'992','%992');
569    
570                    $bib .= '%knjiz '.$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}."\n";
571                  # headline                  # headline
572                  if ($headline) {                  if ($headline) {
573                          $headline .= " [".$row->{mfn}."]";      ## debug MFN!                          $headline .= " <i>(".$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}.")</i>";   ## debug MFN!
574                            $headline =~ s/&/&and;/g;
575                            $headline =~ s/</&lt;/g;
576                            $headline =~ s/>/&gt;/g;
577                          $mps .= "H ".c_852_iso($headline)."\n";                          $mps .= "H ".c_852_iso($headline)."\n";
578                  } else {                  } else {
579                          $mps .= "H nepoznato\n";                          $mps .= "H nepoznato\n";
# Line 497  foreach my $db_name (@isis_dbs) { Line 589  foreach my $db_name (@isis_dbs) {
589    
590                  print R c_852_iso($bib);                  print R c_852_iso($bib);
591    
592                    # check if all fields are defined
593                    foreach (split(/\n/,$bib)) {
594                            if (/^%(\w+)\s/ && !$default::FieldNames{$1}) {
595                                    die "field $1 used but not in FieldNames";
596                            }
597                    }
598    
599    #               print R "%perl ".Dumper($row)."\n";
600    
601                  $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";
602                  $last_tell=tell(R);                  $last_tell=tell(R);
603    

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.20

  ViewVC Help
Powered by ViewVC 1.1.26