File Coverage

blib/lib/Authen/SASL/SASLprep.pm
Criterion Covered Total %
statement 26 26 100.0
branch 2 2 100.0
condition n/a
subroutine 8 8 100.0
pod 1 1 100.0
total 37 37 100.0


line stmt bran cond sub pod time code
1             package Authen::SASL::SASLprep;
2              
3 2     2   15358 use strict;
  2         2  
  2         69  
4 2     2   472 use utf8;
  2         9  
  2         8  
5 2     2   55 use warnings;
  2         2  
  2         148  
6             require 5.006_000;
7              
8             our $VERSION = '1.100';
9             $VERSION = eval $VERSION;
10              
11             require Exporter;
12             our @ISA = qw(Exporter);
13             our @EXPORT = qw(saslprep);
14              
15 2     2   810 use Unicode::Stringprep;
  2         378840  
  2         139  
16              
17 2     2   13 use Unicode::Stringprep::Mapping;
  2         3  
  2         34  
18 2     2   6 use Unicode::Stringprep::Prohibited;
  2         3  
  2         439  
19              
20             my %C12_to_SPACE = ();
21             for(my $pos=0; $pos <= $#Unicode::Stringprep::Prohibited::C12; $pos+=2)
22             {
23             for(my $char = $Unicode::Stringprep::Prohibited::C12[$pos];
24             defined $Unicode::Stringprep::Prohibited::C12[$pos]
25             && $char <= $Unicode::Stringprep::Prohibited::C12[$pos];
26             $char++) {
27             $C12_to_SPACE{$char} = ' ';
28             }
29             };
30              
31             our $_saslprep_stored;
32             our $_saslprep_query;
33              
34             sub saslprep {
35 60     60 1 27748 my ($input, $stored) = @_;
36 60         91 splice @_, 1, 1; ## remove $stored
37              
38 60 100       93 if($stored) {
39 20         426 goto &$_saslprep_stored;
40             } else {
41 40         841 goto &$_saslprep_query;
42             }
43             }
44              
45             BEGIN {
46 2     2   10 my @_common_args = (
47             3.2,
48             [ \@Unicode::Stringprep::Mapping::B1,
49             \%C12_to_SPACE ],
50             'KC',
51             [ \@Unicode::Stringprep::Prohibited::C12,
52             \@Unicode::Stringprep::Prohibited::C21,
53             \@Unicode::Stringprep::Prohibited::C22,
54             \@Unicode::Stringprep::Prohibited::C3,
55             \@Unicode::Stringprep::Prohibited::C4,
56             \@Unicode::Stringprep::Prohibited::C5,
57             \@Unicode::Stringprep::Prohibited::C6,
58             \@Unicode::Stringprep::Prohibited::C7,
59             \@Unicode::Stringprep::Prohibited::C8,
60             \@Unicode::Stringprep::Prohibited::C9,
61             ],
62             1
63             );
64              
65 2         8 our $_saslprep_stored = Unicode::Stringprep->new(
66             @_common_args,
67             1,
68             );
69              
70 2         2632 our $_saslprep_query = Unicode::Stringprep->new(
71             @_common_args,
72             0,
73             );
74             };
75              
76             1;
77             __END__