File Coverage

blib/lib/Unicode/EastAsianWidth.pm
Criterion Covered Total %
statement 18 22 81.8
branch 1 4 25.0
condition n/a
subroutine 9 13 69.2
pod 0 8 0.0
total 28 47 59.5


line stmt bran cond sub pod time code
1             package Unicode::EastAsianWidth;
2              
3 1     1   8691 use 5.006;
  1         4  
  1         39  
4 1     1   5 use strict;
  1         2  
  1         36  
5 1     1   4 use base 'Exporter';
  1         2  
  1         186  
6 1     1   5 use vars qw( $VERSION $EastAsian );
  1         2  
  1         71  
7              
8             BEGIN {
9 1     1   3 $VERSION = '1.33';
10 1         426 $EastAsian = 0;
11             };
12              
13             sub InFullwidth {
14 4 50   4 0 3995 return InEastAsianFullwidth().
15             InEastAsianWide().
16             ($EastAsian ? InEastAsianAmbiguous() : '');
17             }
18              
19             sub InHalfwidth {
20 0 0   0 0 0 return InEastAsianHalfwidth().
21             InEastAsianNarrow().
22             InEastAsianNeutral().
23             ($EastAsian ? '' : InEastAsianAmbiguous());
24             }
25              
26             ### BEGIN ###
27             our @EXPORT = qw(
28             InEastAsianAmbiguous
29             InEastAsianFullwidth
30             InEastAsianHalfwidth
31             InEastAsianNarrow
32             InEastAsianNeutral
33             InEastAsianWide
34             InFullwidth
35             InHalfwidth
36             );
37              
38             sub InEastAsianAmbiguous {
39 3     3 0 9032 return <<"END";
40             00A1\t00A1
41             00A4\t00A4
42             00A7\t00A8
43             00AA\t00AA
44             00AD\t00AE
45             00B0\t00B4
46             00B6\t00BA
47             00BC\t00BF
48             00C6\t00C6
49             00D0\t00D0
50             00D7\t00D8
51             00DE\t00E1
52             00E6\t00E6
53             00E8\t00EA
54             00EC\t00ED
55             00F0\t00F0
56             00F2\t00F3
57             00F7\t00FA
58             00FC\t00FC
59             00FE\t00FE
60             0101\t0101
61             0111\t0111
62             0113\t0113
63             011B\t011B
64             0126\t0127
65             012B\t012B
66             0131\t0133
67             0138\t0138
68             013F\t0142
69             0144\t0144
70             0148\t014B
71             014D\t014D
72             0152\t0153
73             0166\t0167
74             016B\t016B
75             01CE\t01CE
76             01D0\t01D0
77             01D2\t01D2
78             01D4\t01D4
79             01D6\t01D6
80             01D8\t01D8
81             01DA\t01DA
82             01DC\t01DC
83             0251\t0251
84             0261\t0261
85             02C4\t02C4
86             02C7\t02C7
87             02C9\t02CB
88             02CD\t02CD
89             02D0\t02D0
90             02D8\t02DB
91             02DD\t02DD
92             02DF\t02DF
93             0300\t036F
94             0391\t03A9
95             03B1\t03C1
96             03C3\t03C9
97             0401\t0401
98             0410\t044F
99             0451\t0451
100             2010\t2010
101             2013\t2016
102             2018\t2019
103             201C\t201D
104             2020\t2022
105             2024\t2027
106             2030\t2030
107             2032\t2033
108             2035\t2035
109             203B\t203B
110             203E\t203E
111             2074\t2074
112             207F\t207F
113             2081\t2084
114             20AC\t20AC
115             2103\t2103
116             2105\t2105
117             2109\t2109
118             2113\t2113
119             2116\t2116
120             2121\t2122
121             2126\t2126
122             212B\t212B
123             2153\t2154
124             215B\t215E
125             2160\t216B
126             2170\t2179
127             2190\t2199
128             21B8\t21B9
129             21D2\t21D2
130             21D4\t21D4
131             21E7\t21E7
132             2200\t2200
133             2202\t2203
134             2207\t2208
135             220B\t220B
136             220F\t220F
137             2211\t2211
138             2215\t2215
139             221A\t221A
140             221D\t2220
141             2223\t2223
142             2225\t2225
143             2227\t222C
144             222E\t222E
145             2234\t2237
146             223C\t223D
147             2248\t2248
148             224C\t224C
149             2252\t2252
150             2260\t2261
151             2264\t2267
152             226A\t226B
153             226E\t226F
154             2282\t2283
155             2286\t2287
156             2295\t2295
157             2299\t2299
158             22A5\t22A5
159             22BF\t22BF
160             2312\t2312
161             2460\t24E9
162             24EB\t254B
163             2550\t2573
164             2580\t258F
165             2592\t2595
166             25A0\t25A1
167             25A3\t25A9
168             25B2\t25B3
169             25B6\t25B7
170             25BC\t25BD
171             25C0\t25C1
172             25C6\t25C8
173             25CB\t25CB
174             25CE\t25D1
175             25E2\t25E5
176             25EF\t25EF
177             2605\t2606
178             2609\t2609
179             260E\t260F
180             2614\t2615
181             261C\t261C
182             261E\t261E
183             2640\t2640
184             2642\t2642
185             2660\t2661
186             2663\t2665
187             2667\t266A
188             266C\t266D
189             266F\t266F
190             273D\t273D
191             2776\t277F
192             E000\tF8FF
193             FE00\tFE0F
194             FFFD\tFFFD
195             E0100\tE01EF
196             F0000\tFFFFD
197             100000\t10FFFD
198             END
199             }
200              
201             sub InEastAsianFullwidth {
202 4     4 0 13 return <<"END";
203             3000\t3000
204             FF01\tFF60
205             FFE0\tFFE6
206             END
207             }
208              
209             sub InEastAsianHalfwidth {
210 0     0 0 0 return <<"END";
211             20A9\t20A9
212             FF61\tFFDC
213             FFE8\tFFEE
214             END
215             }
216              
217             sub InEastAsianNarrow {
218 0     0 0 0 return <<"END";
219             0020\t007E
220             00A2\t00A3
221             00A5\t00A6
222             00AC\t00AC
223             00AF\t00AF
224             27E6\t27EB
225             2985\t2986
226             END
227             }
228              
229             sub InEastAsianNeutral {
230 0     0 0 0 return <<"END";
231             0000\t001F
232             007F\t00A0
233             00A9\t00A9
234             00AB\t00AB
235             00B5\t00B5
236             00BB\t00BB
237             00C0\t00C5
238             00C7\t00CF
239             00D1\t00D6
240             00D9\t00DD
241             00E2\t00E5
242             00E7\t00E7
243             00EB\t00EB
244             00EE\t00EF
245             00F1\t00F1
246             00F4\t00F6
247             00FB\t00FB
248             00FD\t00FD
249             00FF\t0100
250             0102\t0110
251             0112\t0112
252             0114\t011A
253             011C\t0125
254             0128\t012A
255             012C\t0130
256             0134\t0137
257             0139\t013E
258             0143\t0143
259             0145\t0147
260             014C\t014C
261             014E\t0151
262             0154\t0165
263             0168\t016A
264             016C\t01CD
265             01CF\t01CF
266             01D1\t01D1
267             01D3\t01D3
268             01D5\t01D5
269             01D7\t01D7
270             01D9\t01D9
271             01DB\t01DB
272             01DD\t0250
273             0252\t0260
274             0262\t02C3
275             02C5\t02C6
276             02C8\t02C8
277             02CC\t02CC
278             02CE\t02CF
279             02D1\t02D7
280             02DC\t02DC
281             02DE\t02DE
282             02E0\t02FF
283             0374\t0390
284             03AA\t03B0
285             03C2\t03C2
286             03CA\t0400
287             0402\t040F
288             0450\t0450
289             0452\t10FC
290             1160\t200F
291             2011\t2012
292             2017\t2017
293             201A\t201B
294             201E\t201F
295             2023\t2023
296             2028\t202F
297             2031\t2031
298             2034\t2034
299             2036\t203A
300             203C\t203D
301             203F\t2071
302             2075\t207E
303             2080\t2080
304             2085\t20A8
305             20AA\t20AB
306             20AD\t2102
307             2104\t2104
308             2106\t2108
309             210A\t2112
310             2114\t2115
311             2117\t2120
312             2123\t2125
313             2127\t212A
314             212C\t214E
315             2155\t215A
316             215F\t215F
317             216C\t216F
318             217A\t2184
319             219A\t21B7
320             21BA\t21D1
321             21D3\t21D3
322             21D5\t21E6
323             21E8\t21FF
324             2201\t2201
325             2204\t2206
326             2209\t220A
327             220C\t220E
328             2210\t2210
329             2212\t2214
330             2216\t2219
331             221B\t221C
332             2221\t2222
333             2224\t2224
334             2226\t2226
335             222D\t222D
336             222F\t2233
337             2238\t223B
338             223E\t2247
339             2249\t224B
340             224D\t2251
341             2253\t225F
342             2262\t2263
343             2268\t2269
344             226C\t226D
345             2270\t2281
346             2284\t2285
347             2288\t2294
348             2296\t2298
349             229A\t22A4
350             22A6\t22BE
351             22C0\t2311
352             2313\t2328
353             232B\t244A
354             24EA\t24EA
355             254C\t254F
356             2574\t257F
357             2590\t2591
358             2596\t259F
359             25A2\t25A2
360             25AA\t25B1
361             25B4\t25B5
362             25B8\t25BB
363             25BE\t25BF
364             25C2\t25C5
365             25C9\t25CA
366             25CC\t25CD
367             25D2\t25E1
368             25E6\t25EE
369             25F0\t2604
370             2607\t2608
371             260A\t260D
372             2610\t2613
373             2616\t261B
374             261D\t261D
375             261F\t263F
376             2641\t2641
377             2643\t265F
378             2662\t2662
379             2666\t2666
380             266B\t266B
381             266E\t266E
382             2670\t273C
383             273E\t2775
384             2780\t27E5
385             27F0\t2984
386             2987\t2E1D
387             303F\t303F
388             4DC0\t4DFF
389             A700\tA877
390             D800\tDB7F
391             DB80\tDBFF
392             DC00\tDFFF
393             FB00\tFDFD
394             FE20\tFE23
395             FE70\tFEFF
396             FFF9\tFFFC
397             10000\t1D7FF
398             E0001\tE007F
399             END
400             }
401              
402             sub InEastAsianWide {
403 4     4 0 20 return <<"END";
404             1100\t115F
405             2329\t232A
406             2E80\t2FFB
407             3001\t303E
408             3041\t33FF
409             3400\t4DB5
410             4E00\t9FBB
411             A000\tA4C6
412             AC00\tD7A3
413             F900\tFAD9
414             FE10\tFE19
415             FE30\tFE6B
416             20000\t2A6D6
417             2A6D7\t2F7FF
418             2F800\t2FA1D
419             2FA1E\t2FFFD
420             30000\t3FFFD
421             END
422             }
423              
424             ### END ###
425              
426             1;
427              
428             __END__