File Coverage

blib/lib/Encode/JP/H2Z.pm
Criterion Covered Total %
statement 21 29 72.4
branch 1 6 16.6
condition 0 6 0.0
subroutine 6 7 85.7
pod 0 2 0.0
total 28 50 56.0


line stmt bran cond sub pod time code
1             #
2             # $Id: H2Z.pm,v 2.2 2006/06/03 20:28:48 dankogai Exp $
3             #
4              
5             package Encode::JP::H2Z;
6              
7 7     7   45 use strict;
  7         18  
  7         196  
8 7     7   35 use warnings;
  7         15  
  7         580  
9              
10             our $RCSID = q$Id: H2Z.pm,v 2.2 2006/06/03 20:28:48 dankogai Exp $;
11             our $VERSION = do { my @r = ( q$Revision: 2.2 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
12              
13 7     7   43 use Encode::CJKConstants qw(:all);
  7         14  
  7         845  
14              
15 7         4123 use vars qw(%_D2Z $_PAT_D2Z
16             %_Z2D $_PAT_Z2D
17             %_H2Z $_PAT_H2Z
18 7     7   42 %_Z2H $_PAT_Z2H);
  7         15  
19              
20             %_H2Z = (
21             "\x8e\xa1" => "\xa1\xa3", #。
22             "\x8e\xa2" => "\xa1\xd6", #「
23             "\x8e\xa3" => "\xa1\xd7", #」
24             "\x8e\xa4" => "\xa1\xa2", #、
25             "\x8e\xa5" => "\xa1\xa6", #・
26             "\x8e\xa6" => "\xa5\xf2", #ヲ
27             "\x8e\xa7" => "\xa5\xa1", #ァ
28             "\x8e\xa8" => "\xa5\xa3", #ィ
29             "\x8e\xa9" => "\xa5\xa5", #ゥ
30             "\x8e\xaa" => "\xa5\xa7", #ェ
31             "\x8e\xab" => "\xa5\xa9", #ォ
32             "\x8e\xac" => "\xa5\xe3", #ャ
33             "\x8e\xad" => "\xa5\xe5", #ュ
34             "\x8e\xae" => "\xa5\xe7", #ョ
35             "\x8e\xaf" => "\xa5\xc3", #ッ
36             "\x8e\xb0" => "\xa1\xbc", #ー
37             "\x8e\xb1" => "\xa5\xa2", #ア
38             "\x8e\xb2" => "\xa5\xa4", #イ
39             "\x8e\xb3" => "\xa5\xa6", #ウ
40             "\x8e\xb4" => "\xa5\xa8", #エ
41             "\x8e\xb5" => "\xa5\xaa", #オ
42             "\x8e\xb6" => "\xa5\xab", #カ
43             "\x8e\xb7" => "\xa5\xad", #キ
44             "\x8e\xb8" => "\xa5\xaf", #ク
45             "\x8e\xb9" => "\xa5\xb1", #ケ
46             "\x8e\xba" => "\xa5\xb3", #コ
47             "\x8e\xbb" => "\xa5\xb5", #サ
48             "\x8e\xbc" => "\xa5\xb7", #シ
49             "\x8e\xbd" => "\xa5\xb9", #ス
50             "\x8e\xbe" => "\xa5\xbb", #セ
51             "\x8e\xbf" => "\xa5\xbd", #ソ
52             "\x8e\xc0" => "\xa5\xbf", #タ
53             "\x8e\xc1" => "\xa5\xc1", #チ
54             "\x8e\xc2" => "\xa5\xc4", #ツ
55             "\x8e\xc3" => "\xa5\xc6", #テ
56             "\x8e\xc4" => "\xa5\xc8", #ト
57             "\x8e\xc5" => "\xa5\xca", #ナ
58             "\x8e\xc6" => "\xa5\xcb", #ニ
59             "\x8e\xc7" => "\xa5\xcc", #ヌ
60             "\x8e\xc8" => "\xa5\xcd", #ネ
61             "\x8e\xc9" => "\xa5\xce", #ノ
62             "\x8e\xca" => "\xa5\xcf", #ハ
63             "\x8e\xcb" => "\xa5\xd2", #ヒ
64             "\x8e\xcc" => "\xa5\xd5", #フ
65             "\x8e\xcd" => "\xa5\xd8", #ヘ
66             "\x8e\xce" => "\xa5\xdb", #ホ
67             "\x8e\xcf" => "\xa5\xde", #マ
68             "\x8e\xd0" => "\xa5\xdf", #ミ
69             "\x8e\xd1" => "\xa5\xe0", #ム
70             "\x8e\xd2" => "\xa5\xe1", #メ
71             "\x8e\xd3" => "\xa5\xe2", #モ
72             "\x8e\xd4" => "\xa5\xe4", #ヤ
73             "\x8e\xd5" => "\xa5\xe6", #ユ
74             "\x8e\xd6" => "\xa5\xe8", #ヨ
75             "\x8e\xd7" => "\xa5\xe9", #ラ
76             "\x8e\xd8" => "\xa5\xea", #リ
77             "\x8e\xd9" => "\xa5\xeb", #ル
78             "\x8e\xda" => "\xa5\xec", #レ
79             "\x8e\xdb" => "\xa5\xed", #ロ
80             "\x8e\xdc" => "\xa5\xef", #ワ
81             "\x8e\xdd" => "\xa5\xf3", #ン
82             "\x8e\xde" => "\xa1\xab", #゛
83             "\x8e\xdf" => "\xa1\xac", #゜
84             );
85              
86             %_D2Z = (
87             "\x8e\xb6\x8e\xde" => "\xa5\xac", #ガ
88             "\x8e\xb7\x8e\xde" => "\xa5\xae", #ギ
89             "\x8e\xb8\x8e\xde" => "\xa5\xb0", #グ
90             "\x8e\xb9\x8e\xde" => "\xa5\xb2", #ゲ
91             "\x8e\xba\x8e\xde" => "\xa5\xb4", #ゴ
92             "\x8e\xbb\x8e\xde" => "\xa5\xb6", #ザ
93             "\x8e\xbc\x8e\xde" => "\xa5\xb8", #ジ
94             "\x8e\xbd\x8e\xde" => "\xa5\xba", #ズ
95             "\x8e\xbe\x8e\xde" => "\xa5\xbc", #ゼ
96             "\x8e\xbf\x8e\xde" => "\xa5\xbe", #ゾ
97             "\x8e\xc0\x8e\xde" => "\xa5\xc0", #ダ
98             "\x8e\xc1\x8e\xde" => "\xa5\xc2", #ヂ
99             "\x8e\xc2\x8e\xde" => "\xa5\xc5", #ヅ
100             "\x8e\xc3\x8e\xde" => "\xa5\xc7", #デ
101             "\x8e\xc4\x8e\xde" => "\xa5\xc9", #ド
102             "\x8e\xca\x8e\xde" => "\xa5\xd0", #バ
103             "\x8e\xcb\x8e\xde" => "\xa5\xd3", #ビ
104             "\x8e\xcc\x8e\xde" => "\xa5\xd6", #ブ
105             "\x8e\xcd\x8e\xde" => "\xa5\xd9", #ベ
106             "\x8e\xce\x8e\xde" => "\xa5\xdc", #ボ
107             "\x8e\xca\x8e\xdf" => "\xa5\xd1", #パ
108             "\x8e\xcb\x8e\xdf" => "\xa5\xd4", #ピ
109             "\x8e\xcc\x8e\xdf" => "\xa5\xd7", #プ
110             "\x8e\xcd\x8e\xdf" => "\xa5\xda", #ペ
111             "\x8e\xce\x8e\xdf" => "\xa5\xdd", #ポ
112             "\x8e\xb3\x8e\xde" => "\xa5\xf4", #ヴ
113             );
114              
115             # init only once;
116              
117             #$_PAT_D2Z = join("|", keys %_D2Z);
118             #$_PAT_H2Z = join("|", keys %_H2Z);
119              
120             %_Z2H = reverse %_H2Z;
121             %_Z2D = reverse %_D2Z;
122              
123             #$_PAT_Z2H = join("|", keys %_Z2H);
124             #$_PAT_Z2D = join("|", keys %_Z2D);
125              
126             sub h2z {
127 7     7   45 no warnings qw(uninitialized);
  7         13  
  7         1745  
128 934     934 0 1355 my $r_str = shift;
129 934         1500 my ($keep_dakuten) = @_;
130 934         1329 my $n = 0;
131 934 50       1579 unless ($keep_dakuten) {
132 934         2055 $n = (
133             $$r_str =~ s(
134             ($RE{EUC_KANA}
135             (?:\x8e[\xde\xdf])?)
136             ){
137 0         0 my $str = $1;
138             $_D2Z{$str} || $_H2Z{$str} ||
139             # in case dakuten and handakuten are side-by-side!
140 0 0 0     0 $_H2Z{substr($str,0,2)} . $_H2Z{substr($str,2,2)};
141             }eogx
142             );
143             }
144             else {
145 0         0 $n = (
146             $$r_str =~ s(
147             ($RE{EUC_KANA})
148             ){
149 0         0 $_H2Z{$1};
150             }eogx
151             );
152             }
153 934         1650 $n;
154             }
155              
156             sub z2h {
157 0     0 0   my $r_str = shift;
158 0           my $n = (
159             $$r_str =~ s(
160             ($RE{EUC_C}|$RE{EUC_0212}|$RE{EUC_KANA})
161             ){
162 0 0 0       $_Z2D{$1} || $_Z2H{$1} || $1;
163             }eogx
164             );
165 0           $n;
166             }
167              
168             1;
169             __END__