File Coverage

lib/Egg/Plugin/Filter/Plugin/Japanese.pm
Criterion Covered Total %
statement 12 81 14.8
branch 0 22 0.0
condition 0 4 0.0
subroutine 4 15 26.6
pod n/a
total 16 122 13.1


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