Parent Directory
|
Revision Log
2002-10-12 Nanashi-san * SJIS.pm: New module. * SJIS/: New directory. (Commited by Wakaba <w@suika.fam.cx>)
| 1 | wakaba | 1.1 | =head1 NAME |
| 2 | |||
| 3 | Encode::ISO2022::RFC1345 --- Encode and decode of ISO/IEC 2022 | ||
| 4 | based encodings described in IETF RFC 1345 (and not defined by | ||
| 5 | wakaba | 1.3 | any other standards) |
| 6 | wakaba | 1.1 | |
| 7 | =head1 ENCODINGS | ||
| 8 | |||
| 9 | =over 4 | ||
| 10 | |||
| 11 | =cut | ||
| 12 | |||
| 13 | require 5.7.3; | ||
| 14 | use strict; | ||
| 15 | package Encode::ISO2022::RFC1345; | ||
| 16 | use vars qw($VERSION); | ||
| 17 | wakaba | 1.4 | $VERSION=do{my @r=(q$Revision: 1.3 $=~/\d+/g);sprintf "%d."."%02d" x $#r,@r}; |
| 18 | wakaba | 1.1 | use base qw(Encode::Encoding); |
| 19 | require Encode::ISO2022; | ||
| 20 | |||
| 21 | sub encode ($$;$) { | ||
| 22 | my ($obj, $str, $chk) = @_; | ||
| 23 | $_[1] = '' if $chk; | ||
| 24 | $str = &Encode::ISO2022::internal_to_iso2022 ($str, $obj->__2022_encode); | ||
| 25 | return $str; | ||
| 26 | } | ||
| 27 | |||
| 28 | sub decode ($$;$) { | ||
| 29 | my ($obj, $str, $chk) = @_; | ||
| 30 | $_[1] = '' if $chk; | ||
| 31 | return &Encode::ISO2022::iso2022_to_internal ($str, $obj->__2022_decode); | ||
| 32 | } | ||
| 33 | |||
| 34 | sub __2022__common ($) { | ||
| 35 | my $C = Encode::ISO2022->new_object; | ||
| 36 | $C->{option}->{designate_to}->{C0}->{default} = -1; | ||
| 37 | $C->{option}->{designate_to}->{C1}->{default} = -1; | ||
| 38 | $C->{option}->{designate_to}->{G94}->{default} = -1; | ||
| 39 | $C->{option}->{designate_to}->{G94}->{B} = -1; | ||
| 40 | $C->{option}->{designate_to}->{G94n}->{default} = -1; | ||
| 41 | $C->{option}->{designate_to}->{G96}->{default} = -1; | ||
| 42 | $C->{option}->{designate_to}->{G96n}->{default} = -1; | ||
| 43 | $C->{G1} = $Encode::ISO2022::CHARSET{G94}->{"\x7E"}; ## empty | ||
| 44 | $C->{option}->{reset}->{Gdesignation} = 0; | ||
| 45 | $C->{option}->{reset}->{Ginvoke} = 0; | ||
| 46 | $C; | ||
| 47 | } | ||
| 48 | sub __2022_encode ($) { | ||
| 49 | my $C = shift->__2022__common; | ||
| 50 | $C->{GR} = undef; | ||
| 51 | $C; | ||
| 52 | } | ||
| 53 | sub __2022_decode ($) { | ||
| 54 | my $C = shift->__2022__common; | ||
| 55 | $C; | ||
| 56 | } | ||
| 57 | |||
| 58 | wakaba | 1.4 | sub __clone ($) { |
| 59 | my $self = shift; | ||
| 60 | bless {%$self}, ref $self; | ||
| 61 | }; | ||
| 62 | |||
| 63 | wakaba | 1.1 | package Encode::ISO2022::RFC1345::NATSSEFI; |
| 64 | use vars qw/@ISA/; | ||
| 65 | push @ISA, 'Encode::ISO2022::RFC1345'; | ||
| 66 | __PACKAGE__->Define (qw/NATS-SEFI iso-ir-8-1 csNATSSEFI/); | ||
| 67 | |||
| 68 | =item NATS-SEFI | ||
| 69 | |||
| 70 | NATS-SEFI (Alias: iso-ir-8-1, csNATSSEFI (IANA)) | ||
| 71 | |||
| 72 | =cut | ||
| 73 | |||
| 74 | sub __2022__common ($) { | ||
| 75 | my $C = shift->SUPER::__2022__common; | ||
| 76 | $C->{bit} = 7; | ||
| 77 | $C->{G0} = $Encode::ISO2022::CHARSET{G94}->{"\x43"}; | ||
| 78 | $C->{G1} = $C->{G0}; $C->{G2} = $C->{G1}; $C->{G3} = $C->{G1}; | ||
| 79 | $C->{option}->{undef_char} = ["\x3F", {type => 'G94', charset => "\x43"}]; | ||
| 80 | $C; | ||
| 81 | } | ||
| 82 | |||
| 83 | package Encode::ISO2022::RFC1345::NATSSEFIADD; | ||
| 84 | use vars qw/@ISA/; | ||
| 85 | push @ISA, 'Encode::ISO2022::RFC1345'; | ||
| 86 | __PACKAGE__->Define (qw/NATS-SEFI-ADD iso-ir-8-2 csNATSSEFIADD/); | ||
| 87 | |||
| 88 | =item NATS-SEFI-ADD | ||
| 89 | |||
| 90 | NATS-SEFI-ADD (Alias: iso-ir-8-2, csNATSSEFIADD (IANA)) | ||
| 91 |