--- isis2stream.pl 2002/06/16 19:39:42 1.8 +++ isis2stream.pl 2002/06/24 13:46:53 1.10 @@ -41,6 +41,20 @@ require "./search/config.pm"; #-------------------------------------------------------------------- +# read database configuration, store database names +open(CF,$common::database_cf) || die "$common::database_cf: $!"; +my %DatabaseDescriptions; +while() { + chomp; + if (/^database-name:([^=]+)=(.*)$/) { + my ($db_name,$db_desc) = ($1,$2); + $db_desc=~s/^##\w+##//g; + $DatabaseDescriptions{$db_name}=$db_desc; + } +} +close(CF); + +#-------------------------------------------------------------------- # # expand(nr,"space separated string"); # @@ -315,8 +329,10 @@ } my $headline; - $headline .= isis_sf($row,'200','a',"'"); - $headline .= isis_sf($row,'200','e'," : ","'"); + $headline .= isis_sf($row,'200','a'); + $headline .= isis_sf($row,'200','e'," : "); + $headline .= isis_sf($row,'200','f'," / "); + $headline .= isis_sf($row,'210','d'," , "); # author $bib .= isis_to_bib($row,'700','%700+','*',2,'<'); @@ -392,9 +408,6 @@ $mps .= isis_to_mps($row,'272',2); $mps .= isis_to_mps($row,'273',2); - $headline .= isis_sf($row,'700','b'," "); - $headline .= isis_sf($row,'700','a'," "); - # izdavac $mps .= isis_to_mps($row,'210',3); $mps .= isis_to_mps($row,'250',3); @@ -414,7 +427,6 @@ $year =~ s/^\s*cop\.*\s*//i; $year =~ s/[\[\]]*//g; $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/); - $headline .= " ($year)"; } $mps .= isis_to_mps($row,'215',15); @@ -459,25 +471,30 @@ $bib .= isis_to_bib($row,'991','%991'); $mps .= isis_to_mps($row,'991',12); - sub store_isn { - if (my $isn = shift @_) { - my $nr = shift @_; - my $tag = shift @_; + sub isis_isn_to_mps { + my $row = shift @_ || die; + my $isis_id = shift @_ || die; + my $nr = shift @_ || die; + my $i=0; + my $mps=''; + while (my $isn=$row->{$isis_id}->[$i]) { $isn =~ s/ +//g; # remove spaces $mps .= "W $isn $nr\n"; - $bib .= "$tag $isn\n"; if ($isn =~ s/-//g) { $mps .= "W $isn $nr\n"; } + $i++; } + return $mps; } # ISBN - store_isn($row->{10}->[0],13,'%ISBN'); - $mps .= isis_to_mps($row,'290',13); - $mps .= isis_to_mps($row,'291',13); - $mps .= isis_to_mps($row,'292',13); - $mps .= isis_to_mps($row,'293',13); + $bib .= isis_to_bib($row,'10','%ISBN'); + $mps .= isis_isn_to_mps($row,'10',13); + $mps .= isis_isn_to_mps($row,'290',13); + $mps .= isis_isn_to_mps($row,'291',13); + $mps .= isis_isn_to_mps($row,'292',13); + $mps .= isis_isn_to_mps($row,'293',13); # ISSN #store_isn($row->{11}->[0],14,'%ISSN'); @@ -488,10 +505,11 @@ # headline if ($headline) { - $headline .= " [".$row->{mfn}."]"; ## debug MFN! + $headline .= " (".$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}.")"; ## debug MFN! $headline =~ s/&/∧/g; $headline =~ s//>/g; + $headline =~ s/<(\/?[bi])>/<$1>/g; $mps .= "H ".c_852_iso($headline)."\n"; } else { $mps .= "H nepoznato\n";