File Coverage

blib/lib/Locale/Maketext/Utils/Phrase/Norm/NonBytesStr.pm
Criterion Covered Total %
statement 30 30 100.0
branch 14 14 100.0
condition n/a
subroutine 3 3 100.0
pod 0 1 0.0
total 47 48 97.9


line stmt bran cond sub pod time code
1             package Locale::Maketext::Utils::Phrase::Norm::NonBytesStr;
2              
3 4     4   2206 use strict;
  4         5  
  4         93  
4 4     4   21 use warnings;
  4         4  
  4         1202  
5              
6             sub normalize_maketext_string {
7 74     74 0 74 my ($filter) = @_;
8              
9 74         156 my $string_sr = $filter->get_string_sr();
10              
11             # \x{NNNN…}
12 74 100       67 if ( ${$string_sr} =~ s/(\\x\{[0-9a-fA-F]+\})/[comment,non bytes unicode string “$1”]/g ) {
  74         247  
13 8         18 $filter->add_violation('non-bytes string (perl)');
14             }
15              
16             # \N{…} see `perldoc charnames
17 74 100       62 if ( ${$string_sr} =~ s/(\\N\{[^}]+\})/[comment,charnames.pm type string “$1”]/g ) {
  74         185  
18 8         15 $filter->add_violation('charnames.pm string notation');
19             }
20              
21             # u"\uNNNN…"
22 74 100       61 if ( ${$string_sr} =~ s/([uU])(["'])(\\[uU][0-9a-fA-F]+)\2/[comment,unicode notation “$1“$3””]/g ) {
  74         171  
23 8         14 $filter->add_violation('unicode code point notation (Python style)');
24             }
25              
26             #\uNNNN…
27 74 100       57 if ( ${$string_sr} =~ s/(?
  74         183  
28 8         12 $filter->add_violation('unicode code point notation (C/C++/Java style)');
29             }
30              
31             # X'NNNN…'
32             # U'NNNN…'
33 74 100       47 if ( ${$string_sr} =~ s/(?:([XxUn])(["'])([0-9a-fA-F]+)\2)/[comment,unicode notation “$1‘$3’”]/g ) {
  74         242  
34 8         17 $filter->add_violation('unicode code point notation (alternate style)');
35             }
36              
37             # U+NNNN…
38 74 100       55 if ( ${$string_sr} =~ s/(?
  74         161  
39 8         13 $filter->add_violation('unicode code point notation (visual notation style)'); # TODO: [output,codepoint,NNNN]
40             }
41              
42             # UxNNNN…
43 74 100       57 if ( ${$string_sr} =~ s/([Uu]x[0-9a-fA-F]+)/[comment,unicode notation “$1”]/g ) {
  74         148  
44 8         32 $filter->add_violation('unicode code point notation (visual notation type 2 style)'); # TODO: [output,codepoint,NNNN]
45             }
46              
47 74         153 return $filter->return_value;
48             }
49              
50             1;
51              
52             __END__