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