File Coverage

blib/lib/String/Multibyte/UTF16BE.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             package String::Multibyte::UTF16BE;
2              
3 11     11   77 use vars qw($VERSION);
  11     1   19  
  11         2981  
  1         7  
  1         3  
  1         251  
4             $VERSION = '1.12';
5              
6             +{
7             charset => 'UTF-16BE',
8              
9             regexp => '(?:[\xD8-\xDB][\x00-\xFF][\xDC-\xDF][\x00-\xFF]|' .
10             '[\x00-\xD7\xE0-\xFF][\x00-\xFF])',
11              
12             cmpchar => sub {
13             length($_[0]) <=> length($_[1]) || $_[0] cmp $_[1];
14             },
15              
16             nextchar => sub {
17             my $ch = shift;
18             my $len = length $ch;
19             if ($len == 2) {
20             return $ch eq "\xD7\xFF"
21             ? "\xE0\x00"
22             : $ch eq "\xFF\xFF"
23             ? "\xD8\x00\xDC\x00"
24             : pack('n', 1 + unpack 'n', $ch);
25             }
26             elsif ($len == 4) {
27             my($hi,$lo) = unpack('nn', $ch);
28             return $ch eq "\xDB\xFF\xDF\xFF"
29             ? undef
30             : $lo == 0xDFFF
31             ? pack('nn', $hi+1, 0xDC00)
32             : pack('nn', $hi, $lo+1);
33             }
34             return undef;
35             },
36              
37             hyphen => "\x00-",
38             escape => "\x00\\",
39             };
40              
41             __END__