line |
stmt |
bran |
cond |
sub |
pod |
time |
code |
1
|
|
|
|
|
|
|
package Egg::Plugin::Filter::Plugin::Japanese; |
2
|
|
|
|
|
|
|
# |
3
|
|
|
|
|
|
|
# Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt> |
4
|
|
|
|
|
|
|
# |
5
|
|
|
|
|
|
|
# $Id: Japanese.pm 337 2008-05-14 12:30:09Z lushe $ |
6
|
|
|
|
|
|
|
# |
7
|
1
|
|
|
1
|
|
600
|
use strict; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
39
|
|
8
|
1
|
|
|
1
|
|
6
|
use warnings; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
31
|
|
9
|
1
|
|
|
1
|
|
6
|
use Egg::Plugin::Filter; |
|
1
|
|
|
|
|
2
|
|
|
1
|
|
|
|
|
16
|
|
10
|
1
|
|
|
1
|
|
25
|
use Jcode; |
|
1
|
|
|
|
|
3
|
|
|
1
|
|
|
|
|
1067
|
|
11
|
|
|
|
|
|
|
|
12
|
|
|
|
|
|
|
our $VERSION = '3.00'; |
13
|
|
|
|
|
|
|
|
14
|
|
|
|
|
|
|
our($Zspace, $RZspace); |
15
|
|
|
|
|
|
|
|
16
|
|
|
|
|
|
|
my $EGG= 0; |
17
|
|
|
|
|
|
|
my $VAL= 1; |
18
|
|
|
|
|
|
|
my $ARG= 2; |
19
|
|
|
|
|
|
|
|
20
|
|
|
|
|
|
|
sub _setup_filters { |
21
|
0
|
|
|
0
|
|
|
my($class, $e)= @_; |
22
|
|
|
|
|
|
|
|
23
|
0
|
0
|
|
|
|
|
$Zspace || die q{ I want setup '$Zspace'. }; |
24
|
0
|
0
|
|
|
|
|
$RZspace || die q{ I want setup '$RZspace'. }; |
25
|
|
|
|
|
|
|
|
26
|
0
|
|
|
|
|
|
my $filters= \%Egg::Plugin::Filter::Filters; |
27
|
|
|
|
|
|
|
|
28
|
|
|
|
|
|
|
$filters->{h2z}= sub { |
29
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
30
|
0
|
|
|
|
|
|
${$_[$VAL]}= Jcode->new($_[$VAL])->h2z; |
|
0
|
|
|
|
|
|
|
31
|
0
|
|
|
|
|
|
}; |
32
|
|
|
|
|
|
|
|
33
|
|
|
|
|
|
|
$filters->{a2z}= sub { |
34
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
35
|
0
|
|
|
|
|
|
my $w= Jcode->new($_[$VAL])->h2z; |
36
|
0
|
|
|
|
|
|
$w->tr('A-Z', '£Á-£Ú'); |
37
|
0
|
|
|
|
|
|
$w->tr('a-z', '£Á-£Ú'); |
38
|
0
|
|
|
|
|
|
$w->tr('0-9', '£°-£¹'); |
39
|
0
|
|
|
|
|
|
${$_[$VAL]}= $w; |
|
0
|
|
|
|
|
|
|
40
|
0
|
|
|
|
|
|
}; |
41
|
|
|
|
|
|
|
|
42
|
|
|
|
|
|
|
$filters->{j_trim}= sub { |
43
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
44
|
0
|
|
|
|
|
|
1 while ${$_[$VAL]}=~s{^(?:\s|$Zspace)+} []sg; |
|
0
|
|
|
|
|
|
|
45
|
0
|
|
|
|
|
|
1 while ${$_[$VAL]}=~s{(?:\s|$Zspace)$} []sg; |
|
0
|
|
|
|
|
|
|
46
|
0
|
|
|
|
|
|
}; |
47
|
|
|
|
|
|
|
|
48
|
|
|
|
|
|
|
$filters->{j_hold}= sub { |
49
|
0
|
0
|
|
0
|
|
|
defined(${$_[$VAL]}) and ${$_[$VAL]}=~s{(?:\s|$Zspace)+} []sg; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
50
|
0
|
|
|
|
|
|
}; |
51
|
|
|
|
|
|
|
|
52
|
|
|
|
|
|
|
$filters->{j_strip}= sub { |
53
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
54
|
0
|
|
|
|
|
|
${$_[$VAL]}=~s{(?:\s|$Zspace)+} [ ]sg; |
|
0
|
|
|
|
|
|
|
55
|
0
|
|
|
|
|
|
}; |
56
|
|
|
|
|
|
|
|
57
|
|
|
|
|
|
|
$filters->{j_strip_j}= sub { |
58
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
59
|
0
|
|
|
|
|
|
${$_[$VAL]}=~s{(?:\s|$Zspace)+} [$RZspace]sge; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
60
|
0
|
|
|
|
|
|
}; |
61
|
|
|
|
|
|
|
|
62
|
|
|
|
|
|
|
$filters->{j_strip_blank}= sub { |
63
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
64
|
0
|
|
|
|
|
|
${$_[$VAL]}=~s{(?: |$Zspace)+} [ ]sg; |
|
0
|
|
|
|
|
|
|
65
|
0
|
|
|
|
|
|
}; |
66
|
|
|
|
|
|
|
|
67
|
|
|
|
|
|
|
$filters->{j_strip_blank_j}= sub { |
68
|
0
|
0
|
|
0
|
|
|
return 0 unless defined(${$_[$VAL]}); |
|
0
|
|
|
|
|
|
|
69
|
0
|
|
|
|
|
|
${$_[$VAL]}=~s{(?: |$Zspace)+} [$RZspace]sge; |
|
0
|
|
|
|
|
|
|
|
0
|
|
|
|
|
|
|
70
|
0
|
|
|
|
|
|
}; |
71
|
|
|
|
|
|
|
|
72
|
|
|
|
|
|
|
$filters->{j_text}= sub { |
73
|
0
|
|
|
0
|
|
|
my($e, $v, $a)= @_; |
74
|
0
|
|
|
|
|
|
$filters->{h2z}->($e, $v); |
75
|
0
|
|
|
|
|
|
$filters->{strip_tab}->($e, $v); |
76
|
0
|
|
|
|
|
|
$filters->{j_trim}->($e, $v); |
77
|
0
|
|
|
|
|
|
$filters->{j_strip_blank}->($e, $v); |
78
|
0
|
|
0
|
|
|
|
$filters->{crlf}->($e, $v, [$a->[0] || 3]); |
79
|
0
|
|
|
|
|
|
}; |
80
|
|
|
|
|
|
|
|
81
|
|
|
|
|
|
|
$filters->{j_fold}= sub { |
82
|
0
|
|
|
0
|
|
|
my($e, $v, $a)= @_; |
83
|
0
|
|
0
|
|
|
|
my $len= $a->[0] || 72; |
84
|
0
|
|
|
|
|
|
my $text; |
85
|
0
|
|
|
|
|
|
for (split /\n/, ${$_[$VAL]}) { |
|
0
|
|
|
|
|
|
|
86
|
0
|
0
|
|
|
|
|
$text.= $_ ? join("\n", Jcode->new(\$_)->jfold($len)). "\n": "\n"; |
87
|
|
|
|
|
|
|
} |
88
|
0
|
|
|
|
|
|
chomp $text; |
89
|
0
|
|
|
|
|
|
${$_[$VAL]}= $text; |
|
0
|
|
|
|
|
|
|
90
|
0
|
|
|
|
|
|
}; |
91
|
|
|
|
|
|
|
|
92
|
0
|
|
|
|
|
|
@_; |
93
|
|
|
|
|
|
|
} |
94
|
|
|
|
|
|
|
|
95
|
|
|
|
|
|
|
1; |
96
|
|
|
|
|
|
|
|
97
|
|
|
|
|
|
|
__END__ |
98
|
|
|
|
|
|
|
|
99
|
|
|
|
|
|
|
=head1 NAME |
100
|
|
|
|
|
|
|
|
101
|
|
|
|
|
|
|
Egg::Plugin::Filter::Plugin::Japanese - Filter processing for Japanese. |
102
|
|
|
|
|
|
|
|
103
|
|
|
|
|
|
|
=head1 SYNOPSIS |
104
|
|
|
|
|
|
|
|
105
|
|
|
|
|
|
|
package MyApp; |
106
|
|
|
|
|
|
|
use Egg qw/ Filter /; |
107
|
|
|
|
|
|
|
|
108
|
|
|
|
|
|
|
__PACKAGE__->egg_startup( |
109
|
|
|
|
|
|
|
.......... |
110
|
|
|
|
|
|
|
.... |
111
|
|
|
|
|
|
|
plugin_filter => { |
112
|
|
|
|
|
|
|
plugins=> [qw/ Japanese::EUC /], |
113
|
|
|
|
|
|
|
}, |
114
|
|
|
|
|
|
|
); |
115
|
|
|
|
|
|
|
|
116
|
|
|
|
|
|
|
$e->filter( |
117
|
|
|
|
|
|
|
name => [qw/ hold_html h2z a2z j_strip j_trim /], |
118
|
|
|
|
|
|
|
message => [qw/ escape_html j_text:3 j_fold:72 /], |
119
|
|
|
|
|
|
|
); |
120
|
|
|
|
|
|
|
|
121
|
|
|
|
|
|
|
=head1 DESCRIPTION |
122
|
|
|
|
|
|
|
|
123
|
|
|
|
|
|
|
It is a plugin for L<Egg::Plugin::Filter> that does the filter processing for Japanese. |
124
|
|
|
|
|
|
|
|
125
|
|
|
|
|
|
|
It is made to use by setting plugin of the configuration of L<Egg::Plugin::Filter>. |
126
|
|
|
|
|
|
|
|
127
|
|
|
|
|
|
|
plugin_filter => { |
128
|
|
|
|
|
|
|
plugins=> [qw/ Japanese::UTF8 /], |
129
|
|
|
|
|
|
|
}, |
130
|
|
|
|
|
|
|
|
131
|
|
|
|
|
|
|
[[Egg::Plugin::Filter::Japanese::UTF8]]¡¢ |
132
|
|
|
|
|
|
|
[[Egg::Plugin::Filter::Japanese::EUC]]¡¢ |
133
|
|
|
|
|
|
|
[[Egg::Plugin::Filter::Japanese::Shift_JIS]] |
134
|
|
|
|
|
|
|
|
135
|
|
|
|
|
|
|
=head1 FILTERS |
136
|
|
|
|
|
|
|
|
137
|
|
|
|
|
|
|
=head3 h2z |
138
|
|
|
|
|
|
|
|
139
|
|
|
|
|
|
|
The normal-width katakana is made multi byte character. |
140
|
|
|
|
|
|
|
|
141
|
|
|
|
|
|
|
see [[Jcode]] |
142
|
|
|
|
|
|
|
|
143
|
|
|
|
|
|
|
=head3 a2z |
144
|
|
|
|
|
|
|
|
145
|
|
|
|
|
|
|
The alphanumeric character is made multi byte character. |
146
|
|
|
|
|
|
|
|
147
|
|
|
|
|
|
|
The tr method of [[Jcode]] is used. |
148
|
|
|
|
|
|
|
|
149
|
|
|
|
|
|
|
=head3 j_trim |
150
|
|
|
|
|
|
|
|
151
|
|
|
|
|
|
|
'trim' corresponding to the multi byte space is done. |
152
|
|
|
|
|
|
|
|
153
|
|
|
|
|
|
|
=head3 j_hold |
154
|
|
|
|
|
|
|
|
155
|
|
|
|
|
|
|
'hold' corresponding to the multi byte space is done. |
156
|
|
|
|
|
|
|
|
157
|
|
|
|
|
|
|
=head3 j_strip |
158
|
|
|
|
|
|
|
|
159
|
|
|
|
|
|
|
'strip' corresponding to the multi byte space is done. |
160
|
|
|
|
|
|
|
It is replaced with half angle space. |
161
|
|
|
|
|
|
|
|
162
|
|
|
|
|
|
|
=head3 j_strip_j |
163
|
|
|
|
|
|
|
|
164
|
|
|
|
|
|
|
'strip' corresponding to the multi byte space is done. |
165
|
|
|
|
|
|
|
It is replaced with the multi byte space. |
166
|
|
|
|
|
|
|
|
167
|
|
|
|
|
|
|
=head3 j_strip_blank |
168
|
|
|
|
|
|
|
|
169
|
|
|
|
|
|
|
'strip' is done for only half angle space and the em-size space. |
170
|
|
|
|
|
|
|
It is replaced with half angle space. |
171
|
|
|
|
|
|
|
|
172
|
|
|
|
|
|
|
=head3 j_strip_blank_j |
173
|
|
|
|
|
|
|
|
174
|
|
|
|
|
|
|
'strip' is done for only half angle space and the em-size space. |
175
|
|
|
|
|
|
|
It is replaced with the multi byte space. |
176
|
|
|
|
|
|
|
|
177
|
|
|
|
|
|
|
=head3 j_text [:NUMBER] |
178
|
|
|
|
|
|
|
|
179
|
|
|
|
|
|
|
'h2z' , 'strip_tab' , 'j_trim', 'j_strip_blank', 'crlf' are done at a time. |
180
|
|
|
|
|
|
|
|
181
|
|
|
|
|
|
|
In NUMBER, the default when unspecifying it by the figure passed to crlf is three. |
182
|
|
|
|
|
|
|
|
183
|
|
|
|
|
|
|
$e->filter( |
184
|
|
|
|
|
|
|
hoge => [qw/ j_text:2 /], |
185
|
|
|
|
|
|
|
); |
186
|
|
|
|
|
|
|
|
187
|
|
|
|
|
|
|
Using it by inputting textarea is convenient. |
188
|
|
|
|
|
|
|
|
189
|
|
|
|
|
|
|
=head3 j_fold [:NUMBER] |
190
|
|
|
|
|
|
|
|
191
|
|
|
|
|
|
|
The length of the character a line is arranged. |
192
|
|
|
|
|
|
|
|
193
|
|
|
|
|
|
|
NUMBER is a figure passed to the jfold method of Jcode, and default is 72. |
194
|
|
|
|
|
|
|
|
195
|
|
|
|
|
|
|
=head1 SEE ALSO |
196
|
|
|
|
|
|
|
|
197
|
|
|
|
|
|
|
L<Egg::Release>, |
198
|
|
|
|
|
|
|
L<Egg::Plugin::Filter>, |
199
|
|
|
|
|
|
|
L<Egg::Plugin::Filter::Plugin::UTF8>, |
200
|
|
|
|
|
|
|
L<Egg::Plugin::Filter::Plugin::Shift_JIS>, |
201
|
|
|
|
|
|
|
L<Jcode>, |
202
|
|
|
|
|
|
|
|
203
|
|
|
|
|
|
|
=head1 AUTHOR |
204
|
|
|
|
|
|
|
|
205
|
|
|
|
|
|
|
Masatoshi Mizuno E<lt>lusheE<64>cpan.orgE<gt> |
206
|
|
|
|
|
|
|
|
207
|
|
|
|
|
|
|
=head1 COPYRIGHT AND LICENSE |
208
|
|
|
|
|
|
|
|
209
|
|
|
|
|
|
|
Copyright (C) 2008 Bee Flag, Corp. E<lt>L<http://egg.bomcity.com/>E<gt>. |
210
|
|
|
|
|
|
|
|
211
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or modify |
212
|
|
|
|
|
|
|
it under the same terms as Perl itself, either Perl version 5.8.6 or, |
213
|
|
|
|
|
|
|
at your option, any later version of Perl 5 you may have available. |
214
|
|
|
|
|
|
|
|
215
|
|
|
|
|
|
|
=cut |
216
|
|
|
|
|
|
|
|