File Coverage

blib/lib/URI/_userpass.pm
Criterion Covered Total %
statement 37 38 97.3
branch 21 24 87.5
condition 2 3 66.6
subroutine 5 5 100.0
pod 0 2 0.0
total 65 72 90.2


line stmt bran cond sub pod time code
1             package URI::_userpass;
2              
3 8     8   3260 use strict;
  8         15  
  8         231  
4 8     8   39 use warnings;
  8         12  
  8         219  
5              
6 8     8   43 use URI::Escape qw(uri_unescape);
  8         13  
  8         3551  
7              
8             our $VERSION = '5.20';
9              
10             sub user
11             {
12 30     30 0 66 my $self = shift;
13 30         112 my $info = $self->userinfo;
14 30 100       74 if (@_) {
15 8         20 my $new = shift;
16 8 100       31 my $pass = defined($info) ? $info : "";
17 8         32 $pass =~ s/^[^:]*//;
18              
19 8 50 66     29 if (!defined($new) && !length($pass)) {
20 0         0 $self->userinfo(undef);
21             } else {
22 8 100       21 $new = "" unless defined($new);
23 8         45 $new =~ s/%/%25/g;
24 8         15 $new =~ s/:/%3A/g;
25 8         27 $self->userinfo("$new$pass");
26             }
27             }
28 30 100       79 return undef unless defined $info;
29 22         73 $info =~ s/:.*//;
30 22         64 uri_unescape($info);
31             }
32              
33             sub password
34             {
35 18     18 0 34 my $self = shift;
36 18         48 my $info = $self->userinfo;
37 18 100       85 if (@_) {
38 8         20 my $new = shift;
39 8 50       28 my $user = defined($info) ? $info : "";
40 8         26 $user =~ s/:.*//;
41              
42 8 100       23 if (!defined($new)) {
43 3 100       18 $self->userinfo(length $user ? $user : undef);
44             } else {
45 5 50       13 $new = "" unless defined($new);
46 5         9 $new =~ s/%/%25/g;
47 5         17 $self->userinfo("$user:$new");
48             }
49             }
50 18 100       41 return undef unless defined $info;
51 15 100       77 return undef unless $info =~ s/^[^:]*://;
52 12         41 uri_unescape($info);
53             }
54              
55             1;