--- isis2stream.pl 2002/06/24 13:46:53 1.10 +++ isis2stream.pl 2002/06/25 13:42:54 1.17 @@ -8,7 +8,7 @@ my %opts; -getopt('dm', \%opts); +getopts('d:m:q', \%opts); die "usage: $0 -d [database_dir] -m [database1,database2] " if (! %opts); @@ -84,6 +84,12 @@ return $tmp; } +sub c_iso_852 { + my $tmp = $_[0]; + $tmp =~ tr/ܫꔼȺ̪㍐슂ٝ// if ($tmp); + return $tmp; +} + sub c_852_czs { my $tmp = $_[0]; $tmp =~ tr//ܫꔼȺ̪㍐슂ٝ/; @@ -319,12 +325,12 @@ my $row = OpenIsis::read( $db, $row_id ); if (my $tmp = $row->{'200'}->[0]) { - my $bib = "%MFN $row->{mfn}\n"; + my $bib; my $mps = "W $row->{mfn} 14\n"; my $pcnt = int($row->{mfn} * 100 / $max_rowid); if ($pcnt != $last_pcnt) { - 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}); $last_pcnt = $pcnt; } @@ -334,12 +340,26 @@ $headline .= isis_sf($row,'200','f'," / "); $headline .= isis_sf($row,'210','d'," , "); + # remove newlines, compress spaces + $headline =~ s/[\n\r]//g; + $headline =~ s/^\s+//g; + $headline =~ s/\s+$//g; + # author - $bib .= isis_to_bib($row,'700','%700+','*',2,'<'); - $bib .= isis_to_bib($row,'701','%700+','*',2,'<'); - $bib .= isis_to_bib($row,'710','%700+','*',2,'<'); - $bib .= isis_to_bib($row,'711','%700+','*',2,'<'); - $bib .= isis_to_bib($row,'503','%700+','*',2,'<'); + $bib .= isis_to_bib($row,'700','%700+','ab',undef,'>',', '); + $bib .= isis_to_bib($row,'701','%700+','ab',undef,'>',', '); + $bib .= isis_to_bib($row,'701','%700+','cd',undef,'>',', '); + + my $tmp; + $tmp = isis_sf($row,'710','abc', '', '', (' : ',', ')); + $tmp .= isis_sf($row,'710','dfe', ' (', ')', ('', ' ; ',' ; ')); + $bib .= "%700+ $tmp\n" if ($tmp); + + $tmp = isis_sf($row,'711','abc', '', '', (' : ',', ')); + $tmp .= isis_sf($row,'711','dfe', ' (', ')', ('', ' ; ',' ; ')); + $bib .= "%700+ $tmp\n" if ($tmp); + + $bib .= isis_to_bib($row,'503','%700+','ab',undef,'>',', '); $mps .= isis_to_mps($row,'700',1); $mps .= isis_to_mps($row,'701',1); @@ -375,7 +395,6 @@ $mps .= isis_to_mps($row,'233',2,"ae"); - my $tmp; $tmp = isis_sf($row,'230','v'). isis_sf($row,'230','a',' : '). isis_sf($row,'250',undef,'. - '). @@ -426,6 +445,7 @@ if (my $year = isis_sf($row,'210','d')) { $year =~ s/^\s*cop\.*\s*//i; $year =~ s/[\[\]]*//g; + $year =~ s/[\n\r]//g; # remove cr $mps .= "D ${year}\n" if ($year !~ m/\?/ && $year =~ /\d{4}/); } @@ -460,9 +480,9 @@ $bib .= isis_to_bib($row,'610','%610'); $mps .= isis_to_mps($row,'610',8); - $bib .= isis_to_bib($row,'675','%675+'); + $bib .= isis_to_bib($row,'675','%675+','a'); $mps .= isis_to_mps($row,'675',9); - $bib .= isis_to_bib($row,'686','%675+'); + $bib .= isis_to_bib($row,'686','%675+','a'); $mps .= isis_to_mps($row,'686',10); $bib .= isis_to_bib($row,'990','%990'); @@ -471,6 +491,12 @@ $bib .= isis_to_bib($row,'991','%991'); $mps .= isis_to_mps($row,'991',12); + # Jezik + $bib .= isis_to_bib($row,'101','%101'); + $mps .= isis_to_mps($row,'101',16); + # Pismo + $bib .= isis_to_bib($row,'998','%101', 'a'); + sub isis_isn_to_mps { my $row = shift @_ || die; my $isis_id = shift @_ || die; @@ -479,6 +505,7 @@ my $mps=''; while (my $isn=$row->{$isis_id}->[$i]) { $isn =~ s/ +//g; # remove spaces + $isn =~ s/[\n\r]//g; # remove cr $mps .= "W $isn $nr\n"; if ($isn =~ s/-//g) { $mps .= "W $isn $nr\n"; @@ -501,15 +528,13 @@ $mps .= isis_to_mps($row,'532',1); - $bib .= isis_to_bib($row,'994','%994a','a'); - + $bib .= '%knjiz '.$DatabaseDescriptions{$db_dir}.", ".$row->{mfn}."\n"; # headline if ($headline) { $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";