This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Upgrade to Encode 1.01, from Dan Kogai.
[perl5.git] / ext / Encode / lib / Encode / JP / H2Z.pm
1 #
2 # $Id: H2Z.pm,v 1.0 2002/03/28 23:26:28 dankogai Exp $
3 #
4
5 package Encode::JP::H2Z;
6
7 use strict;
8
9 our $RCSID = q$Id: H2Z.pm,v 1.0 2002/03/28 23:26:28 dankogai Exp $;
10 our $VERSION = do { my @r = (q$Revision: 1.0 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
11
12 use Carp;
13
14 use Encode::CJKConstants qw(:all);
15
16 use vars qw(%_D2Z  $_PAT_D2Z
17             %_Z2D  $_PAT_Z2D
18             %_H2Z  $_PAT_H2Z
19             %_Z2H  $_PAT_Z2H);
20
21 %_H2Z = (
22          "\x8e\xa1"     =>      "\xa1\xa3",     #¡£
23          "\x8e\xa2"     =>      "\xa1\xd6",     #¡Ö
24          "\x8e\xa3"     =>      "\xa1\xd7",     #¡×
25          "\x8e\xa4"     =>      "\xa1\xa2",     #¡¢
26          "\x8e\xa5"     =>      "\xa1\xa6",     #¡¦
27          "\x8e\xa6"     =>      "\xa5\xf2",     #¥ò
28          "\x8e\xa7"     =>      "\xa5\xa1",     #¥¡
29          "\x8e\xa8"     =>      "\xa5\xa3",     #¥£
30          "\x8e\xa9"     =>      "\xa5\xa5",     #¥¥
31          "\x8e\xaa"     =>      "\xa5\xa7",     #¥§
32          "\x8e\xab"     =>      "\xa5\xa9",     #¥©
33          "\x8e\xac"     =>      "\xa5\xe3",     #¥ã
34          "\x8e\xad"     =>      "\xa5\xe5",     #¥å
35          "\x8e\xae"     =>      "\xa5\xe7",     #¥ç
36          "\x8e\xaf"     =>      "\xa5\xc3",     #¥Ã
37          "\x8e\xb0"     =>      "\xa1\xbc",     #¡¼
38          "\x8e\xb1"     =>      "\xa5\xa2",     #¥¢
39          "\x8e\xb2"     =>      "\xa5\xa4",     #¥¤
40          "\x8e\xb3"     =>      "\xa5\xa6",     #¥¦
41          "\x8e\xb4"     =>      "\xa5\xa8",     #¥¨
42          "\x8e\xb5"     =>      "\xa5\xaa",     #¥ª
43          "\x8e\xb6"     =>      "\xa5\xab",     #¥«
44          "\x8e\xb7"     =>      "\xa5\xad",     #¥­
45          "\x8e\xb8"     =>      "\xa5\xaf",     #¥¯
46          "\x8e\xb9"     =>      "\xa5\xb1",     #¥±
47          "\x8e\xba"     =>      "\xa5\xb3",     #¥³
48          "\x8e\xbb"     =>      "\xa5\xb5",     #¥µ
49          "\x8e\xbc"     =>      "\xa5\xb7",     #¥·
50          "\x8e\xbd"     =>      "\xa5\xb9",     #¥¹
51          "\x8e\xbe"     =>      "\xa5\xbb",     #¥»
52          "\x8e\xbf"     =>      "\xa5\xbd",     #¥½
53          "\x8e\xc0"     =>      "\xa5\xbf",     #¥¿
54          "\x8e\xc1"     =>      "\xa5\xc1",     #¥Á
55          "\x8e\xc2"     =>      "\xa5\xc4",     #¥Ä
56          "\x8e\xc3"     =>      "\xa5\xc6",     #¥Æ
57          "\x8e\xc4"     =>      "\xa5\xc8",     #¥È
58          "\x8e\xc5"     =>      "\xa5\xca",     #¥Ê
59          "\x8e\xc6"     =>      "\xa5\xcb",     #¥Ë
60          "\x8e\xc7"     =>      "\xa5\xcc",     #¥Ì
61          "\x8e\xc8"     =>      "\xa5\xcd",     #¥Í
62          "\x8e\xc9"     =>      "\xa5\xce",     #¥Î
63          "\x8e\xca"     =>      "\xa5\xcf",     #¥Ï
64          "\x8e\xcb"     =>      "\xa5\xd2",     #¥Ò
65          "\x8e\xcc"     =>      "\xa5\xd5",     #¥Õ
66          "\x8e\xcd"     =>      "\xa5\xd8",     #¥Ø
67          "\x8e\xce"     =>      "\xa5\xdb",     #¥Û
68          "\x8e\xcf"     =>      "\xa5\xde",     #¥Þ
69          "\x8e\xd0"     =>      "\xa5\xdf",     #¥ß
70          "\x8e\xd1"     =>      "\xa5\xe0",     #¥à
71          "\x8e\xd2"     =>      "\xa5\xe1",     #¥á
72          "\x8e\xd3"     =>      "\xa5\xe2",     #¥â
73          "\x8e\xd4"     =>      "\xa5\xe4",     #¥ä
74          "\x8e\xd5"     =>      "\xa5\xe6",     #¥æ
75          "\x8e\xd6"     =>      "\xa5\xe8",     #¥è
76          "\x8e\xd7"     =>      "\xa5\xe9",     #¥é
77          "\x8e\xd8"     =>      "\xa5\xea",     #¥ê
78          "\x8e\xd9"     =>      "\xa5\xeb",     #¥ë
79          "\x8e\xda"     =>      "\xa5\xec",     #¥ì
80          "\x8e\xdb"     =>      "\xa5\xed",     #¥í
81          "\x8e\xdc"     =>      "\xa5\xef",     #¥ï
82          "\x8e\xdd"     =>      "\xa5\xf3",     #¥ó
83          "\x8e\xde"     =>      "\xa1\xab",     #¡«
84          "\x8e\xdf"     =>      "\xa1\xac",     #¡¬
85 );
86
87 %_D2Z = (
88          "\x8e\xb6\x8e\xde"     =>      "\xa5\xac",     #¥¬
89          "\x8e\xb7\x8e\xde"     =>      "\xa5\xae",     #¥®
90          "\x8e\xb8\x8e\xde"     =>      "\xa5\xb0",     #¥°
91          "\x8e\xb9\x8e\xde"     =>      "\xa5\xb2",     #¥²
92          "\x8e\xba\x8e\xde"     =>      "\xa5\xb4",     #¥´
93          "\x8e\xbb\x8e\xde"     =>      "\xa5\xb6",     #¥¶
94          "\x8e\xbc\x8e\xde"     =>      "\xa5\xb8",     #¥¸
95          "\x8e\xbd\x8e\xde"     =>      "\xa5\xba",     #¥º
96          "\x8e\xbe\x8e\xde"     =>      "\xa5\xbc",     #¥¼
97          "\x8e\xbf\x8e\xde"     =>      "\xa5\xbe",     #¥¾
98          "\x8e\xc0\x8e\xde"     =>      "\xa5\xc0",     #¥À
99          "\x8e\xc1\x8e\xde"     =>      "\xa5\xc2",     #¥Â
100          "\x8e\xc2\x8e\xde"     =>      "\xa5\xc5",     #¥Å
101          "\x8e\xc3\x8e\xde"     =>      "\xa5\xc7",     #¥Ç
102          "\x8e\xc4\x8e\xde"     =>      "\xa5\xc9",     #¥É
103          "\x8e\xca\x8e\xde"     =>      "\xa5\xd0",     #¥Ð
104          "\x8e\xcb\x8e\xde"     =>      "\xa5\xd3",     #¥Ó
105          "\x8e\xcc\x8e\xde"     =>      "\xa5\xd6",     #¥Ö
106          "\x8e\xcd\x8e\xde"     =>      "\xa5\xd9",     #¥Ù
107          "\x8e\xce\x8e\xde"     =>      "\xa5\xdc",     #¥Ü
108          "\x8e\xca\x8e\xdf"     =>      "\xa5\xd1",     #¥Ñ
109          "\x8e\xcb\x8e\xdf"     =>      "\xa5\xd4",     #¥Ô
110          "\x8e\xcc\x8e\xdf"     =>      "\xa5\xd7",     #¥×
111          "\x8e\xcd\x8e\xdf"     =>      "\xa5\xda",     #¥Ú
112          "\x8e\xce\x8e\xdf"     =>      "\xa5\xdd",     #¥Ý
113          "\x8e\xb3\x8e\xde"     =>      "\xa5\xf4",     #¥ô
114 );
115
116 # init only once;
117
118 #$_PAT_D2Z = join("|", keys %_D2Z);
119 #$_PAT_H2Z = join("|", keys %_H2Z);
120
121 %_Z2H = reverse %_H2Z;
122 %_Z2D = reverse %_D2Z;
123
124 #$_PAT_Z2H    = join("|", keys %_Z2H);
125 #$_PAT_Z2D    = join("|", keys %_Z2D);
126
127 sub h2z {
128     my $r_str = shift;
129     my ($keep_dakuten) = @_;
130     my $n = 0;
131     unless ($keep_dakuten){
132         $n = (
133               $$r_str =~ s(
134                            ($RE{EUC_KANA}
135                             (?:\x8e[\xde\xdf])?)
136                            ){
137                   my $str = $1;
138                   $_D2Z{$str} || $_H2Z{$str} || 
139                       # in case dakuten and handakuten are side-by-side!
140                       $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)};
141                   }eogx
142               );
143     }else{
144         $n = (
145               $$r_str =~ s(
146                            ($RE{EUC_KANA})
147                            ){
148                   $_H2Z{$1};
149                   }eogx
150               );
151     }
152     $n;
153 }
154
155 sub z2h {
156     my $r_str = shift;
157     my $n = (
158              $$r_str =~ s(
159                           ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA})
160                           ){
161                  $_Z2D{$1} || $_Z2H{$1} || $1;
162                  }eogx
163              );
164     $n;
165 }
166
167 1;
168 __END__
169
170
171 =head1 NAME
172
173 Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*
174
175 =cut