X-Git-Url: http://git.rot13.org/?p=crolist2marc;a=blobdiff_plain;f=crolist2marc.pl;h=68e602e56fbda7d47fd00900987d4ae134bfaa63;hp=50ae051afa6e8034de29a01d3559f564265bb6da;hb=HEAD;hpb=f38a1bfdcec11795747621e5f29e6cdeef5dce7b diff --git a/crolist2marc.pl b/crolist2marc.pl index 50ae051..68e602e 100755 --- a/crolist2marc.pl +++ b/crolist2marc.pl @@ -10,10 +10,12 @@ use utf8; my $data; sub vc_casefix { # partial reverse-engeenered implementation of case mapping - my ( $vc, $k, $rest ) = @_; + my ( $tag, $sfi, $vc, $k, $rest ) = @_; $vc .= " " x (4 - length($vc)); + $k =~ tr/^~]}\\|[{@`/ČčĆćĐ𩹮ž/; # CROASCII (YUS|HRN) B1.002:1982 + my @m = map { ord($_) } split(//, $vc); my $mask = ( $m[3] & 0b00001111 ) << 4 | ( $m[2] & 0b00001111 ); @@ -27,7 +29,7 @@ sub vc_casefix { # partial reverse-engeenered implementation of case mapping $sel >>= 1; } - if ( substr($vc,0,1) eq 'x' ) { + if ( substr($vc,0,1) eq 'x' || ( $tag =~ m/^(200|210|225|700|701|702|710|711|712)$/ ) ) { #&& $sfi eq '$a' )) { $fixed = ucfirst $fixed; } @@ -86,7 +88,7 @@ csv_file( 'tsv/TEKTAG.csv', sub { my ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $textkey, $textres, $vc ) = split(/\t/,$_); - my $text = vc_casefix( $vc, $textkey, $textres ); + my $text = vc_casefix( $tag, $sfi, $vc, $textkey, $textres ); return ( $idsl, $tag, $tagno, $id, $sfi, $sfino, $text ); }); @@ -96,7 +98,7 @@ csv_file( 'tsv/NUMTAG.csv', sub { my ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $LTAG, $LTAGNO, $LID, $LSFI, $TXKEY, $TXRES, $VC, $STOPW ) = split(/\t/,$_); - my $text = vc_casefix( $VC, $TXKEY, $TXRES ); + my $text = vc_casefix( $TAG, $SFI, $VC, $TXKEY, $TXRES ); return ( $IDSL, $TAG, $TAGNO, $ID, $SFI, $SFINO, $text ); });