package Encode
::JP
::JIS7
;
our $VERSION = do { my @r = (q
$Revision: 1.8 $ =~ /\d+/g); sprintf "%d."."%02d" x
$#r, @r };
use Encode
qw(:fallbacks);
for my $name ('7bit-jis', 'iso-2022-jp', 'iso-2022-jp-1'){
my $h2z = ($name eq '7bit-jis') ?
0 : 1;
my $jis0212 = ($name eq 'iso-2022-jp') ?
0 : 1;
$Encode::Encoding
{$name} =
use base
qw(Encode::Encoding);
# we override this to 1 so PerlIO works
use Encode
::CJKConstants
qw(:all);
# decode is identical for all 2022 variants
my ($obj, $str, $chk) = @_;
$str =~ s/([^\x00-\x7f].*)$//so;
$residue .= jis_euc
(\
$str);
$_[1] = $residue if $chk;
return Encode
::decode
('euc-jp', $str, FB_PERLQQ
);
my ($obj, $utf8, $chk) = @_;
# empty the input string in the stack so perlio is ok
my ($h2z, $jis0212) = @
$obj{qw(h2z jis0212)};
my $octet = Encode
::encode
('euc-jp', $utf8, FB_PERLQQ
) ;
$h2z and &Encode
::JP
::H2Z
::h2z
(\
$octet);
euc_jis
(\
$octet, $jis0212);
($RE{JIS_0212
}|$RE{JIS_0208
}|$RE{ISO_ASC
}|$RE{JIS_KANA
})
my ($esc, $chunk) = ($1, $2);
if ($esc !~ /$RE{ISO_ASC}/o) {
$chunk =~ tr/\x21-\x7e/\xa1-\xfe/;
if ($esc =~ /$RE{JIS_KANA}/o) {
$chunk =~ s/([\xa1-\xdf])/\x8e$1/og;
elsif ($esc =~ /$RE{JIS_0212}/o) {
$chunk =~ s/([\xa1-\xfe][\xa1-\xfe])/\x8f$1/og;
my ($residue) = ($$r_str =~ s/(\e.*)$//so);
no warnings
qw(uninitialized);
((?
:$RE{EUC_C
})+|(?
:$RE{EUC_KANA
})+|(?
:$RE{EUC_0212
})+)
( $chunk =~ tr/\x8E//d ) ?
$ESC{KANA
} :
( $chunk =~ tr/\x8F//d ) ?
$ESC{JIS_0212
} :
if ($esc eq $ESC{JIS_0212
} && !$jis0212){
$chunk =~ tr/\xA1-\xFE/\x3F/;
$chunk =~ tr/\xA1-\xFE/\x21-\x7E/;
$esc . $chunk . $ESC{ASC
};
(\Q
$ESC{KANA
}\E
|\Q
$ESC{JIS_0212
}\E
|\Q
$ESC{JIS_0208
}\E
)/$1/gox;
Encode::JP::JIS7 -- internally used by Encode::JP