File Coverage

blib/lib/HTML/AA.pm
Criterion Covered Total %
statement 9 346 2.6
branch 0 252 0.0
condition 0 30 0.0
subroutine 3 22 13.6
pod 0 19 0.0
total 12 669 1.7


line stmt bran cond sub pod time code
1             package HTML::AA;
2            
3 1     1   34645 use 5.008008;
  1         5  
  1         43  
4 1     1   7 use strict;
  1         2  
  1         36  
5 1     1   4 use warnings;
  1         6  
  1         11316  
6            
7             require Exporter;
8            
9             our @ISA = qw(Exporter);
10             our %EXPORT_TAGS = ( 'all' => [ qw( ) ] );
11             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
12             our @EXPORT = qw( );
13             our $VERSION = '0.10';
14             #-------------------------------------------------------------------------------
15             # Module declaration
16             #-------------------------------------------------------------------------------
17             sub new {
18 0     0 0   my $self = {};
19 0           bless $self;
20 0           return $self;
21             }
22             #-------------------------------------------------------------------------------
23             # The character-code is declared.
24             #-------------------------------------------------------------------------------
25             my $code = 'euc';
26             #-------------------------------------------------------------------------------
27             # The character-code that the module processes is declared.
28             # It is effective in the call that doesn't specify the character-code.
29             # If it wants to process it with EUC-JP, it is euc.
30             # $aart -> code('euc');
31             # If it wants to process it with Shift_JIS, it is sjis.
32             # $aart -> code('sjis');
33             #-------------------------------------------------------------------------------
34             sub code {
35 0     0 0   my $self = shift;
36 0           $code = shift;
37             }
38             #-------------------------------------------------------------------------------
39             # The number of dots is calculated.
40             # $aart -> calcu($str);
41             #-------------------------------------------------------------------------------
42             sub calcu {
43 0     0 0   my $self = shift;
44 0           my $str = shift;
45            
46 0 0         return $self -> calcu_euc($str) if $code eq 'euc';
47 0 0         return $self -> calcu_sjis($str) if $code eq 'sjis';
48             }
49             # When you want to process it with EUC-JP disregarding the character-code declaration
50             # $aart -> calcu_euc($str);
51             sub calcu_euc {
52 0     0 0   my $self = shift;
53 0           my $str = shift;
54            
55 0           my $count = 0;
56            
57 0           foreach ( $self -> divide_euc($str) ) {
58             #------------------- 2 bytes
59 0 0         if ($_ =~ /../) {
60 0 0         if ($_ =~ /\xa1\xbc|\xa3\xcd|\xa3\xed|\xa4\xa2|\xa4\xa4|\xa4\xaa|\xa4\xb1|\xa4\xb9|\xa4\xbd|\xa4\xbe|\xa4\xbf|\xa4\xc0|\xa4\xc4|\xa4\xc5|\xa4\xcb|\xa4\xd2|\xa4\xd3|\xa4\xd4|\xa4\xf3|\xa5\xa6|\xa5\xaa|\xa5\xac|\xa5\xad|\xa5\xae|\xa5\xb0|\xa5\xb1|\xa5\xb2|\xa5\xba|\xa5\xbb|\xa5\xc0|\xa5\xc1|\xa5\xc2|\xa5\xc5|\xa5\xc7|\xa5\xca|\xa5\xcb|\xa5\xcd|\xa5\xd8|\xa5\xd9|\xa5\xda|\xa5\xdb|\xa5\xdc|\xa5\xdd|\xa5\xe6|\xa5\xef|\xa5\xf4/){
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
61 0           $count += 15;
62             }
63             elsif ($_ =~ /\xa4\xa8|\xa4\xad|\xa4\xae|\xa4\xb4|\xa4\xb6|\xa4\xc1|\xa4\xc2|\xa4\xc6|\xa4\xc7|\xa4\xc9|\xa4\xca|\xa4\xde|\xa4\xe3|\xa4\xe5|\xa4\xe8|\xa4\xeb|\xa4\xed|\xa4\xee|\xa4\xf2|\xa5\xa2|\xa5\xa8|\xa5\xb4|\xa5\xb7|\xa5\xb8|\xa5\xb9|\xa5\xbe|\xa5\xc4|\xa5\xc6|\xa5\xd3|\xa5\xd4|\xa5\xd6|\xa5\xd7|\xa5\xde|\xa5\xe2|\xa5\xec|\xa5\xed|\xa5\xf3/){
64 0           $count += 14;
65             }
66             elsif ($_ =~ /\xa3\xcf|\xa3\xd1|\xa4\xa3|\xa4\xa9|\xa4\xb0|\xa4\xb3|\xa4\xc3|\xa4\xe2|\xa4\xe9|\xa5\xa4|\xa5\xa9|\xa5\xab|\xa5\xaf|\xa5\xb3|\xa5\xbd|\xa5\xcc|\xa5\xd5|\xa5\xe3|\xa5\xe5|\xa5\xe9|\xa5\xf2/){
67 0           $count += 13;
68             }
69             elsif ($_ =~ /\xa1\xb3|\xa1\xb4|\xa1\xb5|\xa3\xc2|\xa3\xc3|\xa3\xc4|\xa3\xc7|\xa3\xc8|\xa3\xcb|\xa3\xce|\xa3\xd2|\xa3\xd3|\xa3\xd5|\xa3\xf7|\xa4\xa1|\xa4\xa7|\xa4\xb5|\xa4\xb7|\xa4\xb8|\xa4\xc8|\xa4\xe7|\xa4\xea|\xa5\xa1|\xa5\xa5|\xa5\xa7|\xa5\xbf|\xa5\xc3|\xa5\xd2|\xa5\xe1|\xa5\xe8|\xa5\xea|\xa5\xee|\xa5\xf5|\xa5\xf6/){
70 0           $count += 12;
71             }
72             elsif ($_ =~ /\x8e\xbb|\x8e\xd1|\x8e\xd4|\x8e\xd9|\xa1\xa2|\xa1\xa3|\xa1\xa4|\xa1\xa5|\xa1\xb6|\xa3\xb0|\xa3\xb1|\xa3\xb2|\xa3\xb3|\xa3\xb4|\xa3\xb5|\xa3\xb6|\xa3\xb7|\xa3\xb8|\xa3\xb9|\xa3\xc1|\xa3\xc5|\xa3\xd0|\xa3\xd6|\xa4\xa6|\xa5\xc9|\xa5\xce|\xa5\xdf|\xa1\xa1/){
73 0           $count += 11;
74             }
75             elsif ($_ =~ /\x8e\xb0|\x8e\xb1|\x8e\xb3|\x8e\xb4|\x8e\xb5|\x8e\xb7|\x8e\xb9|\x8e\xbd|\x8e\xbe|\x8e\xc1|\x8e\xc2|\x8e\xc3|\x8e\xc5|\x8e\xc6|\x8e\xc8|\x8e\xca|\x8e\xcd|\x8e\xce|\x8e\xcf|\x8e\xd3|\x8e\xd5|\xa3\xc6|\xa3\xca|\xa3\xcc|\xa3\xd4|\xa3\xd8|\xa3\xd9|\xa3\xda|\xa3\xe2|\xa3\xe4|\xa3\xe8|\xa3\xeb|\xa3\xee|\xa3\xef|\xa3\xf0|\xa3\xf1|\xa3\xf5|\xa4\xa5|\xa5\xa3|\xa5\xc8|\xa5\xe7/){
76 0           $count += 10;
77             }
78             elsif ($_ =~ /\xa3\xe1|\xa3\xe3|\xa3\xe5|\xa3\xe7|\xa3\xf3|\xa4\xaf|\x8e\xa6|\x8e\xb2|\x8e\xb6|\x8e\xb8|\x8e\xba|\x8e\xbc|\x8e\xbf|\x8e\xc0|\x8e\xc7|\x8e\xcc|\x8e\xd7|\x8e\xda|\x8e\xdb|\x8e\xdc|\x8e\xdd/){
79 0           $count += 9;
80             }
81             elsif ($_ =~ /\x8e\xa7|\x8e\xa9|\x8e\xaa|\x8e\xab|\x8e\xac|\x8e\xad|\x8e\xaf|\x8e\xc9|\x8e\xcb|\x8e\xd2|\x8e\xd6|\x8e\xd8|\xa1\xa6|\xa1\xa7|\xa1\xa8|\xa1\xab|\xa1\xac|\xa1\xad|\xa1\xae|\xa1\xaf|\xa1\xb0|\xa1\xbe|\xa1\xc6|\xa1\xc7|\xa1\xc8|\xa1\xc9|\xa1\xca|\xa1\xcb|\xa1\xcc|\xa1\xcd|\xa1\xce|\xa1\xcf|\xa1\xd0|\xa1\xd1|\xa1\xd2|\xa1\xd3|\xa1\xd4|\xa1\xd5|\xa1\xd6|\xa1\xd7|\xa1\xd8|\xa1\xd9|\xa1\xda|\xa1\xdb|\xa2\xf7|\xa2\xf8|\xa2\xf9|\xa3\xf6|\xa3\xf8|\xa3\xf9|\xa3\xfa/){
82 0           $count += 8;
83             }
84             elsif ($_ =~ /\x8e\xa2|\x8e\xa3|\x8e\xa5|\x8e\xa8|\x8e\xae|\x8e\xc4|\x8e\xd0|\x8e\xa1|\x8e\xa4/){
85 0           $count += 7;
86             }
87             elsif ($_ =~ /\xa3\xf2/){
88 0           $count += 6;
89             }
90             elsif ($_ =~ /\xa3\xe6|\xa3\xf4/){
91 0           $count += 5;
92             }
93             elsif ($_ =~ /\x8e\xde|\x8e\xdf|\xa3\xc9|\xa3\xe9|\xa3\xea|\xa3\xec/){
94 0           $count += 4;
95             }
96             # There is no character of 3 dots.
97             else {
98 0           $count += 16;
99             }
100             }
101             #------------------- 1byte
102             else {
103             # There is no character of 15 dots.
104             # There is no character of 14 dots.
105             # There is no character of 13 dots.
106 0 0         if ($_ =~ /\x4d|\x57|\x6d/){
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
107 0           $count += 12;
108             }
109             elsif ($_ =~ /\x40|\x43|\x47|\x4f|\x51/){
110 0           $count += 11;
111             }
112             elsif ($_ =~ /\x26|\x41|\x42|\x44|\x48|\x4b|\x4e|\x50|\x52|\x53|\x55|\x56|\x58|\x77/){
113 0           $count += 10;
114             }
115             elsif ($_ =~ /\x45|\x46|\x4a|\x4c|\x54|\x59|\x5a/){
116 0           $count += 9;
117             }
118             elsif ($_ =~ /\x61|\x62|\x63|\x64|\x65|\x68|\x6e|\x6f|\x70|\x71|\x75|\x76|\x79|\x22|\x23|\x24|\x25|\x2a|\x2b|\x2d|\x2f|\x30|\x31|\x32|\x33|\x34|\x35|\x36|\x37|\x38|\x39|\x3c|\x3d|\x3e|\x5c/){
119 0           $count += 8;
120             }
121             elsif ($_ =~ /\x3f|\x5e|\x60|\x67|\x6b|\x73|\x78|\x7a|\x7e/){
122 0           $count += 7;
123             }
124             elsif ($_ =~ /\x72|\x74/){
125 0           $count += 6;
126             }
127             elsif ($_ =~ /\x28|\x29|\x5b|\x5d|\x5f|\x66|\x20/){
128 0           $count += 5;
129             }
130             elsif ($_ =~ /\x21|\x49|\x6a|\x7b|\x7c|\x7d/){
131 0           $count += 4;
132             }
133             elsif ($_ =~ /\x27|\x2c|\x2e|\x3a|\x3b|\x69|\x6c/){
134 0           $count += 3;
135             }
136             }
137             }
138            
139 0           return $count;
140             }
141             # When you want to process it with Shift_JIS disregarding the character-code declaration
142             # $aart -> calcu_sjis($str);
143             sub calcu_sjis {
144 0     0 0   my $self = shift;
145 0           my $str = shift;
146            
147 0           my $count = 0;
148            
149 0           foreach ( $self -> divide_sjis($str) ) {
150             #------------------- 2 bytes
151 0 0         if ($_ =~ /../) {
152 0 0         if ($_ =~ /\x81\x5b|\x82\x6c|\x82\x8d|\x82\xa0|\x82\xa2|\x82\xa8|\x82\xaf|\x82\xb7|\x82\xbb|\x82\xbc|\x82\xbd|\x82\xbe|\x82\xc2|\x82\xc3|\x82\xc9|\x82\xd0|\x82\xd1|\x82\xd2|\x82\xf1|\x83\x45|\x83\x49|\x83\x4b|\x83\x4c|\x83\x4d|\x83\x4f|\x83\x50|\x83\x51|\x83\x59|\x83\x5a|\x83\x5f|\x83\x60|\x83\x61|\x83\x64|\x83\x66|\x83\x69|\x83\x6a|\x83\x6c|\x83\x77|\x83\x78|\x83\x79|\x83\x7a|\x83\x7b|\x83\x7c|\x83\x86|\x83\x8f|\x83\x94/){
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
153 0           $count += 15;
154             }
155             elsif ($_ =~ /\x82\xa6|\x82\xab|\x82\xac|\x82\xb2|\x82\xb4|\x82\xbf|\x82\xc0|\x82\xc4|\x82\xc5|\x82\xc7|\x82\xc8|\x82\xdc|\x82\xe1|\x82\xe3|\x82\xe6|\x82\xe9|\x82\xeb|\x82\xec|\x82\xf0|\x83\x41|\x83\x47|\x83\x53|\x83\x56|\x83\x57|\x83\x58|\x83\x5d|\x83\x63|\x83\x65|\x83\x72|\x83\x73|\x83\x75|\x83\x76|\x83\x7d|\x83\x82|\x83\x8c|\x83\x8d|\x83\x93/){
156 0           $count += 14;
157             }
158             elsif ($_ =~ /\x82\x6e|\x82\x70|\x82\xa1|\x82\xa7|\x82\xae|\x82\xb1|\x82\xc1|\x82\xe0|\x82\xe7|\x83\x43|\x83\x48|\x83\x4a|\x83\x4e|\x83\x52|\x83\x5c|\x83\x6b|\x83\x74|\x83\x83|\x83\x85|\x83\x89|\x83\x92/){
159 0           $count += 13;
160             }
161             elsif ($_ =~ /\x81\x52|\x81\x53|\x81\x54|\x82\x61|\x82\x62|\x82\x63|\x82\x66|\x82\x67|\x82\x6a|\x82\x6d|\x82\x71|\x82\x72|\x82\x74|\x82\x97|\x82\x9f|\x82\xa5|\x82\xb3|\x82\xb5|\x82\xb6|\x82\xc6|\x82\xe5|\x82\xe8|\x83\x40|\x83\x44|\x83\x46|\x83\x5e|\x83\x62|\x83\x71|\x83\x81|\x83\x88|\x83\x8a|\x83\x8e|\x83\x95|\x83\x96/){
162 0           $count += 12;
163             }
164             elsif ($_ =~ /\x81\x41|\x81\x42|\x81\x43|\x81\x44|\x81\x55|\x82\x4f|\x82\x50|\x82\x51|\x82\x52|\x82\x53|\x82\x54|\x82\x55|\x82\x56|\x82\x57|\x82\x58|\x82\x60|\x82\x64|\x82\x6f|\x82\x75|\x82\xa4|\x83\x68|\x83\x6d|\x83\x7e|\x81\x40/){
165 0           $count += 11;
166             }
167             elsif ($_ =~ /\x82\x65|\x82\x69|\x82\x6b|\x82\x73|\x82\x77|\x82\x78|\x82\x79|\x82\x82|\x82\x84|\x82\x88|\x82\x8b|\x82\x8e|\x82\x8f|\x82\x90|\x82\x91|\x82\x95|\x82\xa3|\x83\x42|\x83\x67|\x83\x87/){
168 0           $count += 10;
169             }
170             elsif ($_ =~ /\x82\x81|\x82\x83|\x82\x85|\x82\x87|\x82\x93|\x82\xad/){
171 0           $count += 9;
172             }
173             elsif ($_ =~ /\x81\x45|\x81\x46|\x81\x47|\x81\x4a|\x81\x4b|\x81\x4c|\x81\x4d|\x81\x4e|\x81\x4f|\x81\x5d|\x81\x65|\x81\x66|\x81\x67|\x81\x68|\x81\x69|\x81\x6a|\x81\x6b|\x81\x6c|\x81\x6d|\x81\x6e|\x81\x6f|\x81\x70|\x81\x71|\x81\x72|\x81\x73|\x81\x74|\x81\x75|\x81\x76|\x81\x77|\x81\x78|\x81\x79|\x81\x7a|\x81\xf5|\x81\xf6|\x81\xf7|\x82\x96|\x82\x98|\x82\x99|\x82\x9a/){
174 0           $count += 8;
175             }
176             # There is no character of 7 dots.
177             elsif ($_ =~ /\x82\x92/){
178 0           $count += 6;
179             }
180             elsif ($_ =~ /\x82\x86|\x82\x94/){
181 0           $count += 5;
182             }
183             elsif ($_ =~ /\x82\x68|\x82\x89|\x82\x8a|\x82\x8c/){
184 0           $count += 4;
185             }
186             # There is no character of 3 dots.
187             else {
188 0           $count += 16;
189             }
190             }
191             #------------------- 1byte
192             else {
193             # There is no character of 15 dots.
194             # There is no character of 14 dots.
195             # There is no character of 13 dots.
196 0 0         if ($_ =~ /\x4d|\x57|\x6d/){
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
197 0           $count += 12;
198             }
199             elsif ($_ =~ /\x40|\x43|\x47|\x4f|\x51|\xbb|\xd1|\xd4|\xd9/){
200 0           $count += 11;
201             }
202             elsif ($_ =~ /\x26|\x41|\x42|\x44|\x48|\x4b|\x4e|\x50|\x52|\x53|\x55|\x56|\x58|\x77|\xb0|\xb1|\xb3|\xb4|\xb5|\xb7|\xb9|\xbd|\xbe|\xc1|\xc2|\xc3|\xc5|\xc6|\xc8|\xca|\xcd|\xce|\xcf|\xd3|\xd5/){
203 0           $count += 10;
204             }
205             elsif ($_ =~ /\x45|\x46|\x4a|\x4c|\x54|\x59|\x5a|\xa6|\xb2|\xb6|\xb8|\xba|\xbc|\xbf|\xc0|\xc7|\xcc|\xd7|\xda|\xdb|\xdc|\xdd/){
206 0           $count += 9;
207             }
208             elsif ($_ =~ /\x61|\x62|\x63|\x64|\x65|\x68|\x6e|\x6f|\x70|\x71|\x75|\x76|\x79|\x22|\x23|\x24|\x25|\x2a|\x2b|\x2d|\x2f|\x30|\x31|\x32|\x33|\x34|\x35|\x36|\x37|\x38|\x39|\x3c|\x3d|\x3e|\x5c|\xa7|\xa9|\xaa|\xab|\xac|\xad|\xaf|\xc9|\xcb|\xd2|\xd6|\xd8/){
209 0           $count += 8;
210             }
211             elsif ($_ =~ /\x3f|\x5e|\x60|\x67|\x6b|\x73|\x78|\x7a|\x7e|\xa2|\xa3|\xa5|\xa8|\xae|\xc4|\xd0|\xa1|\xa4/){
212 0           $count += 7;
213             }
214             elsif ($_ =~ /\x72|\x74/){
215 0           $count += 6;
216             }
217             elsif ($_ =~ /\x28|\x29|\x5b|\x5d|\x5f|\x66|\x20/){
218 0           $count += 5;
219             }
220             elsif ($_ =~ /\x21|\x49|\x6a|\x7b|\x7c|\x7d|\xde|\xdf/){
221 0           $count += 4;
222             }
223             elsif ($_ =~ /\x27|\x2c|\x2e|\x3a|\x3b|\x69|\x6c/){
224 0           $count += 3;
225             }
226             }
227             }
228            
229 0           return $count;
230             }
231             #-------------------------------------------------------------------------------
232             # The variable of the character string is resolved to the array of one character.
233             # $aart -> divide($str);
234             #-------------------------------------------------------------------------------
235             sub divide {
236 0     0 0   my $self = shift;
237 0           my $str = shift;
238            
239 0 0         return $self -> divide_euc($str) if $code eq 'euc';
240 0 0         return $self -> divide_sjis($str) if $code eq 'sjis';
241             }
242             # When you want to process it with EUC-JP disregarding the character-code declaration
243             # $aart -> divide_euc($str);
244             sub divide_euc {
245 0     0 0   my $self = shift;
246 0           my $str = shift;
247            
248 0           my $esc = '[\x00-\x1F]';
249 0           my $oneBytes = '[\x20-\x7E]';
250 0           my $twoBytes1 = '\x8E[\xA1-\xDF]';
251 0           my $twoBytes2 = '[\xA1-\xFE][\xA1-\xFE]';
252 0           my $threeBytes = '\x8F[\xA1-\xFE][\xA1-\xFE]';
253            
254 0           $str =~ s/$esc//og;
255 0           my @array = $str =~ /$oneBytes|$twoBytes1|$twoBytes2|$threeBytes/og;
256 0           return @array;
257             }
258             # When you want to process it with Shift_JIS disregarding the character-code declaration
259             # $aart -> divide_sjis($str);
260             sub divide_sjis {
261 0     0 0   my $self = shift;
262 0           my $str = shift;
263            
264 0           my $esc = '[\x00-\x1F]';
265 0           my $oneBytes = '[\x20-\x7E\xA1-\xDF]';
266 0           my $twoBytes1 = '[\x81-\x9F][\x40-\x7E]';
267 0           my $twoBytes2 = '[\xE0-\xEF][\x80-\xFC]';
268            
269 0           $str =~ s/$esc//og;
270 0           my @array;
271 0           while($str) {
272 0           $str =~ s/(.)//;
273 0           my $tmp = $1;
274            
275 0 0         if ($tmp =~ /$oneBytes/og) {
276 0           push @array , $tmp;
277 0           next;
278             }
279 0           $str =~ s/(.)//;
280 0           $tmp .= $1;
281 0           push @array , $tmp;
282             }
283            
284 0           return @array;
285             }
286             #-------------------------------------------------------------------------------
287             # The character string that adds the adjustment dot is returned.
288             # $aart -> adjust($str_l, $str_r, position, $size);
289             #-------------------------------------------------------------------------------
290             sub adjust {
291 0     0 0   my $self = shift;
292 0   0       my $str_l = shift || q{};
293 0   0       my $str_r = shift || q{};
294 0   0       my $position = shift || 'L';
295 0           my $size = shift;
296            
297 0 0 0       return $self -> adjust_right_euc($str_l, $str_r, $size) if $code eq 'euc' && $position eq 'R';
298 0 0 0       return $self -> adjust_left_euc($str_l, $str_r, $size) if $code eq 'euc' && $position eq 'L';
299 0 0 0       return $self -> adjust_right_sjis($str_l, $str_r, $size) if $code eq 'sjis' && $position eq 'R';
300 0 0 0       return $self -> adjust_left_sjis($str_l, $str_r, $size) if $code eq 'sjis' && $position eq 'L';
301             }
302             # When you want to process it with EUC-JP disregarding the character-code declaration and position 'R'.
303             # $aart -> adjust_right_euc($str_l, $str_r, $size);
304             sub adjust_right_euc {
305 0     0 0   my $self = shift;
306 0   0       my $str_l = shift || q{};
307 0   0       my $str_r = shift || q{};
308 0           my $size = shift;
309 0           my $count = $self -> calcu_euc("$str_l$str_r");
310            
311 0           my $diff = $size - $count;
312 0           my $space = int( $diff/11 );
313            
314 0           my $set2 = q{};
315 0           for (my $t = 0; $t < $space; $t ++) {
316 0           $diff -= 11;
317 0           $set2 .= "\xa1\xa1";
318             }
319            
320 0 0         if ($diff == 1) {
321 0 0         if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 \./) {}
322 0           else { $set2 =~ s/\xa1\xa1$/\.\.\.\./; }
323             }
324 0 0         if ($diff == 2) { $set2 =~ s/\xa1\xa1\xa1\xa1$/ \xa1\xa1 \./ }
  0            
325 0 0         if ($diff == 3) { $set2 .= '.' }
  0            
326 0 0         if ($diff == 4) {
327 0 0         if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 /) {}
328 0           else { $set2 =~ s/\xa1\xa1$/\.\.\.\.\./; }
329             }
330 0 0         if ($diff == 5) { $set2 .= ' ' }
  0            
331 0 0         if ($diff == 6) {
332 0 0         if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 \. /) {}
333 0           else { $set2 .= '..' }
334             }
335 0 0         if ($diff == 7) { $set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \./ }
  0            
336 0 0         if ($diff == 8) { $set2 .= ' .' }
  0            
337 0 0         if ($diff == 9) {
338 0 0         if ($set2 =~ s/\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1$/ \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
339 0           else { $set2 .= '...' }
340             }
341 0 0         if ($diff == 10) { $set2 =~ s/\xa1\xa1\xa1\xa1$/\xa1\xa1 \xa1\xa1 / }
  0            
342            
343 0           return "$str_l$set2$str_r";
344             }
345             # When you want to process it with EUC-JP disregarding the character-code declaration and position 'L'.
346             # $aart -> adjust_left_euc($str_l, $str_r, $size);
347             sub adjust_left_euc {
348 0     0 0   my $self = shift;
349 0           my $str_l = join q{}, $self -> divide_euc(shift);
350 0           my $str_r = join q{}, $self -> divide_euc(shift);
351 0           my $size = shift;
352            
353 0           my $count = $self -> calcu_euc("$str_l$str_r");
354 0           my $diff = $size - $count;
355 0           my $space = int( $diff/11 );
356            
357 0           my $set2 = q{};
358 0           for (my $t = 0; $t < $space; $t ++) {
359 0           $diff -= 11;
360 0           $set2 .= "\xa1\xa1";
361             }
362 0 0         if ($diff == 1) {
363 0 0         if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/\. \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
364 0           else { $set2 =~ s/^\xa1\xa1/\.\.\.\./; }
365             }
366 0 0         if ($diff == 2) { $set2 =~ s/^\xa1\xa1\xa1\xa1/\. \xa1\xa1 / }
  0            
367 0 0         if ($diff == 3) { $set2 = '.'.$set2 }
  0            
368 0 0         if ($diff == 4) {
369 0 0         if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1/ \xa1\xa1 \xa1\xa1 /) {}
370 0           else { $set2 =~ s/^\xa1\xa1/\.\.\.\.\./ }
371             }
372 0 0         if ($diff == 5) { $set2 = ' '.$set2 }
  0            
373 0 0         if ($diff == 6) {
374 0 0         if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/ \. \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
375 0           else { $set2 = '..'.$set2 }
376             }
377 0 0         if ($diff == 7) { $set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1/\. \xa1\xa1 \xa1\xa1 / }
  0            
378 0 0         if ($diff == 8) { $set2 = '. '.$set2 }
  0            
379 0 0         if ($diff == 9) {
380 0 0         if ($set2 =~ s/^\xa1\xa1\xa1\xa1\xa1\xa1\xa1\xa1/ \xa1\xa1 \xa1\xa1 \xa1\xa1 /) {}
381 0           else { $set2 = '...'.$set2 }
382             }
383 0 0         if ($diff == 10) { $set2 =~ s/^\xa1\xa1\xa1\xa1/\xa1\xa1 \xa1\xa1 / }
  0            
384            
385 0           return "$str_l$set2$str_r";
386             }
387             # When you want to process it with Shift_JIS disregarding the character-code declaration and position 'R'.
388             # $aart -> adjust_right_sjis($str_l, $str_r, $size);
389             sub adjust_right_sjis {
390 0     0 0   my $self = shift;
391 0   0       my $str_l = shift || q{};
392 0   0       my $str_r = shift || q{};
393 0           my $size = shift;
394 0           my $count = $self -> calcu_sjis("$str_l$str_r");
395            
396 0           my $diff = $size - $count;
397 0           my $space = int( $diff/11 );
398            
399 0           my $set2 = q{};
400 0           for (my $t = 0; $t < $space; $t ++) {
401 0           $diff -= 11;
402 0           $set2 .= "\x81\x40";
403             }
404            
405 0 0         if ($diff == 1) {
406 0 0         if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 \./) {}
407 0           else { $set2 =~ s/\x81\x40$/\.\.\.\./; }
408             }
409 0 0         if ($diff == 2) { $set2 =~ s/\x81\x40\x81\x40$/ \x81\x40 \./ }
  0            
410 0 0         if ($diff == 3) { $set2 .= '.' }
  0            
411 0 0         if ($diff == 4) {
412 0 0         if ($set2 =~ s/\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 /) {}
413 0           else { $set2 =~ s/\x81\x40$/\.\.\.\.\./; }
414             }
415 0 0         if ($diff == 5) { $set2 .= ' ' }
  0            
416 0 0         if ($diff == 6) {
417 0 0         if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 \. /) {}
418 0           else { $set2 .= '..' }
419             }
420 0 0         if ($diff == 7) { $set2 =~ s/\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \./ }
  0            
421 0 0         if ($diff == 8) { $set2 .= ' .' }
  0            
422 0 0         if ($diff == 9) {
423 0 0         if ($set2 =~ s/\x81\x40\x81\x40\x81\x40\x81\x40$/ \x81\x40 \x81\x40 \x81\x40 /) {}
424 0           else { $set2 .= '...' }
425             }
426 0 0         if ($diff == 10) { $set2 =~ s/\x81\x40\x81\x40$/\x81\x40 \x81\x40 / }
  0            
427            
428 0           return "$str_l$set2$str_r";
429             }
430             # When you want to process it with Shift_JIS disregarding the character-code declaration and position 'L'.
431             # $aart -> adjust_left_sjis($str_l, $str_r, $size);
432             sub adjust_left_sjis {
433 0     0 0   my $self = shift;
434 0   0       my $str_l = shift || q{};
435 0   0       my $str_r = shift || q{};
436 0           my $size = shift;
437            
438 0           my $count = $self -> calcu_sjis("$str_l$str_r");
439 0           my $diff = $size - $count;
440 0           my $space = int( $diff/11 );
441            
442 0           my $set2 = q{};
443 0           for (my $t = 0; $t < $space; $t ++) {
444 0           $diff -= 11;
445 0           $set2 .= "\x81\x40";
446             }
447 0 0         if ($diff == 1) {
448 0 0         if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40/\. \x81\x40 \x81\x40 \x81\x40 /) {}
449 0           else { $set2 =~ s/^\x81\x40/\.\.\.\./; }
450             }
451 0 0         if ($diff == 2) { $set2 =~ s/^\x81\x40\x81\x40/\. \x81\x40 / }
  0            
452 0 0         if ($diff == 3) { $set2 = '.'.$set2 }
  0            
453 0 0         if ($diff == 4) {
454 0 0         if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40/ \x81\x40 \x81\x40 /) {}
455 0           else { $set2 =~ s/^\x81\x40/\.\.\.\.\./ }
456             }
457 0 0         if ($diff == 5) { $set2 = ' '.$set2 }
  0            
458 0 0         if ($diff == 6) {
459 0 0         if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40\x81\x40/ \. \x81\x40 \x81\x40 \x81\x40 /) {}
460 0           else { $set2 = '..'.$set2 }
461             }
462 0 0         if ($diff == 7) { $set2 =~ s/^\x81\x40\x81\x40\x81\x40/\. \x81\x40 \x81\x40 / }
  0            
463 0 0         if ($diff == 8) { $set2 = '. '.$set2 }
  0            
464 0 0         if ($diff == 9) {
465 0 0         if ($set2 =~ s/^\x81\x40\x81\x40\x81\x40\x81\x40/ \x81\x40 \x81\x40 \x81\x40 /) {}
466 0           else { $set2 = '...'.$set2 }
467             }
468 0 0         if ($diff == 10) { $set2 =~ s/^\x81\x40\x81\x40/\x81\x40 \x81\x40 / }
  0            
469            
470 0           return "$str_l$set2$str_r";
471             }
472             #-------------------------------------------------------------------------------
473             # The number of shorter dots where the character string of the array becomes complete is returned.
474             # $aart -> shorter(@array);
475             #-------------------------------------------------------------------------------
476             sub shorter {
477 0     0 0   my $self = shift;
478 0           my @array = @_;
479            
480 0 0         return $self -> shorter_euc(@array) if $code eq 'euc';
481 0 0         return $self -> shorter_sjis(@array) if $code eq 'sjis';
482             }
483             # When you want to process it with EUC-JP disregarding the character-code declaration.
484             # $aart -> shorter_euc(@array);
485             sub shorter_euc {
486 0     0 0   my $self = shift;
487 0           my @array = @_;
488 0           my $fit = 0;
489            
490 0           foreach my $buf (@array) {
491 0           my $set = $self -> calcu_euc($buf);
492 0 0         next if $fit >= $set;
493 0           $fit = $set;
494             }
495            
496 0           while (1) {
497 0           my $flag = 0;
498 0           foreach my $set (@array) {
499 0           my $temp = $self -> adjust_right_euc($set,q{},$fit);
500 0           my $temp2 = $self -> calcu_euc($temp);
501 0 0         next if $fit == $temp2;
502 0           $flag = 1;
503 0           $fit ++;
504 0           last;
505             }
506 0 0         last unless $flag;
507             }
508            
509 0           return $fit;
510             }
511             # When you want to process it with Shift_JIS disregarding the character-code declaration.
512             # $aart -> shorter_sjis(@array);
513             sub shorter_sjis {
514 0     0 0   my $self = shift;
515 0           my @array = @_;
516 0           my $fit = 0;
517            
518 0           foreach my $buf (@array) {
519 0           my $set = $self -> calcu_sjis($buf);
520 0 0         next if $fit >= $set;
521 0           $fit = $set;
522             }
523            
524 0           while (1) {
525 0           my $flag = 0;
526 0           foreach my $set (@array) {
527 0           my $temp = $self -> adjust_right_sjis($set,q{},$fit);
528 0           my $temp2 = $self -> calcu_sjis($temp);
529 0 0         next if $fit == $temp2;
530 0           $flag = 1;
531 0           $fit ++;
532 0           last;
533             }
534 0 0         last unless $flag;
535             }
536            
537 0           return $fit;
538             }
539             #-------------------------------------------------------------------------------
540             # The number of shorter dots that hits multiples of the number specified that
541             # the character string of the array becomes complete is returned.
542             # ($minimun, $magnification) = $aart -> shorter_multiple($width, \@arrayL, \@arrayR);
543             #-------------------------------------------------------------------------------
544             sub shorter_multiple {
545 0     0 0   my $self = shift;
546 0           my ($number, $left, $right) = @_;
547 0           my @arrayL = @$left;
548 0           my @arrayR = @$right;
549            
550 0 0         return $self -> shorter_multiple_euc($number, \@$left, \@$right) if $code eq 'euc';
551 0 0         return $self -> shorter_multiple_sjis($number, \@$left, \@$right) if $code eq 'sjis';
552             }
553             # When you want to process it with EUC-JP disregarding the character-code declaration.
554             # ($minimun, $magnification) = $aart -> shorter_multiple_euc($width, \@arrayL, \@arrayR);
555             sub shorter_multiple_euc() {
556 0     0 0   my $self = shift;
557 0           my ($number, $left, $right) = @_;
558 0           my @arrayL = @$left;
559 0           my @arrayR = @$right;
560            
561 0           my $width = $self -> shorter_euc(@arrayL) + $self -> shorter_euc(@arrayR);
562 0           my $multiple = $width / $number;
563 0 0         my $shorter = ( $multiple - int($multiple) ) ? $number * ( int($multiple) + 1) : $number * $multiple;
564            
565 0           while (1) {
566 0           my $flag = 0;
567 0           for (my $i = 0; $i < @arrayL; $i ++) {
568 0           my $temp = $self -> adjust_right_euc($arrayL[$i], $arrayR[$i], $shorter);
569 0           my $temp2 = $self -> calcu_euc( $temp );
570 0 0         next if $shorter == $temp2;
571 0           $shorter += $number;
572 0           $flag = 1;
573 0           last;
574             }
575 0 0         last unless $flag;
576             }
577            
578 0           return $shorter, $shorter / $number;
579             }
580             # When you want to process it with Shift_JIS disregarding the character-code declaration.
581             # ($minimun, $magnification) = $aart -> shorter_multiple_sjis($width, \@arrayL, \@arrayR);
582             sub shorter_multiple_sjis() {
583 0     0 0   my $self = shift;
584 0           my ($number, $left, $right) = @_;
585 0           my @arrayL = @$left;
586 0           my @arrayR = @$right;
587            
588 0           my $width = $self -> shorter_sjis(@arrayL) + $self -> shorter_sjis(@arrayR);
589 0           my $multiple = $width / $number;
590 0 0         my $shorter = ( $multiple - int($multiple) ) ? $number * ( int($multiple) + 1) : $number * $multiple;
591            
592 0           while (1) {
593 0           my $flag = 0;
594 0           for (my $i = 0; $i < @arrayL; $i ++) {
595 0           my $temp = $self -> adjust_right_sjis($arrayL[$i], $arrayR[$i], $shorter);
596 0           my $temp2 = $self -> calcu_sjis( $temp );
597 0 0         next if $shorter == $temp2;
598 0           $shorter += $number;
599 0           $flag = 1;
600 0           last;
601             }
602 0 0         last unless $flag;
603             }
604            
605 0           return $shorter, $shorter / $number;
606             }
607            
608             1;
609             __END__