capitalize few more fields
[crolist2marc] / crolist2marc.pl
index 50ae051..68e602e 100755 (executable)
@@ -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 );
 });