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
|
---|