File Coverage

blib/lib/String/Multibyte/Grapheme.pm
Criterion Covered Total %
statement 9 9 100.0
branch n/a
condition n/a
subroutine 3 3 100.0
pod n/a
total 12 12 100.0


line stmt bran cond sub pod time code
1             package String::Multibyte::Grapheme;
2              
3             require 5.008;
4 1     1   10 use vars qw($VERSION);
  1     1   1  
  1         161  
  1         10  
  1         2  
  1         108  
5             $VERSION = '1.12';
6              
7             our $CRLF = qr/(?:\cM\cJ)/;
8 1     1   4212 our $Control = qr/(?!\cM\cJ)[\p{Zl}\p{Zp}\p{Cc}\p{Cf}]/;
  1         17  
  1         20  
9             our $Any = qr/[^\p{Zl}\p{Zp}\p{Cc}\p{Cf}]/;
10              
11             our $Extend;
12             eval q{ ' ' =~ /\p{GraphemeExtend}/ }; # since 5.12 ?
13             if ($@) {
14             eval q{ $Extend = qr/[\p{Mn}\p{Me}\p{OtherGraphemeExtend}]/ };
15             } else {
16             eval q{ $Extend = qr/\p{GraphemeExtend}/ };
17             }
18              
19             our $HangL = qr/[\x{1100}-\x{1159}\x{115F}]/; # Hangul Jamo Leading Consonant
20             our $HangV = qr/[\x{1160}-\x{11A2}]/; # Hangul Jamo Vowel
21             our $HangT = qr/[\x{11A8}-\x{11F9}]/; # Hangul Jamo Trailing Consonant
22             our $HangS = qr/[\x{AC00}-\x{D7A3}]/; # Hangul Syllable
23             our $cHangLV = join '', map sprintf("\\x{%04X}", 0xAC00+28*$_), 0..19*21-1;
24             our $HangLV = qr/[$cHangLV]/; # Hangul Syllable LV
25             our $HangLVT = qr/(?!$HangLV)$HangS/; # Hangul Syllable LVT
26             our $Hangul = qr/(?:$HangL*(?:$HangLV$HangV*|$HangV+|$HangLVT)$HangT*
27             | $HangL+ | $HangT+ )/x;
28             our $Grapheme = qr/(?:$CRLF|$Control|(?:$Hangul|$Any)$Extend*)/;
29              
30             +{
31             charset => 'Default Grapheme Cluster',
32             regexp => $Grapheme,
33             };
34              
35             __END__