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   7 use vars qw($VERSION);
  1     1   2  
  1         111  
  1         6  
  1         1  
  1         75  
5             $VERSION = '1.10';
6              
7             our $CRLF = qr/(?:\cM\cJ)/;
8 1     1   587 our $Control = qr/(?!\cM\cJ)[\p{Zl}\p{Zp}\p{Cc}\p{Cf}]/;
  1         7  
  1         11  
9             our $Any = qr/[^\p{Zl}\p{Zp}\p{Cc}\p{Cf}]/;
10              
11             eval { ' ' =~ /\p{GraphemeExtend}/ };
12             our $Extend = $@ ? qr/[\p{Mn}\p{Me}\p{OtherGraphemeExtend}]/
13             : qr/\p{GraphemeExtend}/;
14             our $HangL = qr/[\x{1100}-\x{1159}\x{115F}]/; # Hangul Jamo Leading Consonant
15             our $HangV = qr/[\x{1160}-\x{11A2}]/; # Hangul Jamo Vowel
16             our $HangT = qr/[\x{11A8}-\x{11F9}]/; # Hangul Jamo Trailing Consonant
17             our $HangS = qr/[\x{AC00}-\x{D7A3}]/; # Hangul Syllable
18             our $cHangLV = join '', map sprintf("\\x{%04X}", 0xAC00+28*$_), 0..19*21-1;
19             our $HangLV = qr/[$cHangLV]/; # Hangul Syllable LV
20             our $HangLVT = qr/(?!$HangLV)$HangS/; # Hangul Syllable LVT
21             our $Hangul = qr/(?:$HangL*(?:$HangLV$HangV*|$HangV+|$HangLVT)$HangT*
22             | $HangL+ | $HangT+ )/x;
23             our $Grapheme = qr/(?:$CRLF|$Control|(?:$Hangul|$Any)$Extend*)/;
24              
25             +{
26             charset => 'Default Grapheme Cluster',
27             regexp => $Grapheme,
28             };
29              
30             __END__