Upgrade to Encode 1.56, from Dan Kogai.
[p5sagit/p5-mst-13.2.git] / ext / Encode / lib / Encode / JP / H2Z.pm
1 #
2 # $Id: H2Z.pm,v 1.1 2002/04/22 03:43:05 dankogai Exp $
3 #
4
5 package Encode::JP::H2Z;
6
7 use strict;
8
9 our $RCSID = q$Id: H2Z.pm,v 1.1 2002/04/22 03:43:05 dankogai Exp $;
10 our $VERSION = do { my @r = (q$Revision: 1.1 $ =~ /\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     no warnings qw(uninitialized);
129     my $r_str = shift;
130     my ($keep_dakuten) = @_;
131     my $n = 0;
132     unless ($keep_dakuten){
133         $n = (
134               $$r_str =~ s(
135                            ($RE{EUC_KANA}
136                             (?:\x8e[\xde\xdf])?)
137                            ){
138                   my $str = $1;
139                   $_D2Z{$str} || $_H2Z{$str} || 
140                       # in case dakuten and handakuten are side-by-side!
141                       $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)};
142                   }eogx
143               );
144     }else{
145         $n = (
146               $$r_str =~ s(
147                            ($RE{EUC_KANA})
148                            ){
149                   $_H2Z{$1};
150                   }eogx
151               );
152     }
153     $n;
154 }
155
156 sub z2h {
157     my $r_str = shift;
158     my $n = (
159              $$r_str =~ s(
160                           ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA})
161                           ){
162                  $_Z2D{$1} || $_Z2H{$1} || $1;
163                  }eogx
164              );
165     $n;
166 }
167
168 1;
169 __END__
170
171
172 =head1 NAME
173
174 Encode::JP::H2Z -- internally used by Encode::JP::2022_JP*
175
176 =cut