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 );
$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;
}
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 );
});
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 );
});