File Coverage

blib/lib/URI/Split.pm
Criterion Covered Total %
statement 34 34 100.0
branch 16 16 100.0
condition 3 3 100.0
subroutine 6 6 100.0
pod 2 2 100.0
total 61 61 100.0


line stmt bran cond sub pod time code
1             package URI::Split;
2              
3 1     1   70831 use strict;
  1         11  
  1         31  
4 1     1   5 use warnings;
  1         2  
  1         46  
5              
6             our $VERSION = '5.21';
7              
8 1     1   5 use Exporter 5.57 'import';
  1         36  
  1         53  
9             our @EXPORT_OK = qw(uri_split uri_join);
10              
11 1     1   434 use URI::Escape ();
  1         3  
  1         485  
12              
13             sub uri_split {
14 5     5 1 2445 return $_[0] =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,;
15             }
16              
17             sub uri_join {
18 12     12 1 538 my($scheme, $auth, $path, $query, $frag) = @_;
19 12 100       30 my $uri = defined($scheme) ? "$scheme:" : "";
20 12 100       48 $path = "" unless defined $path;
21 12 100       31 if (defined $auth) {
    100          
22 5         22 $auth =~ s,([/?\#]), URI::Escape::escape_char($1),eg;
  4         10  
23 5         9 $uri .= "//$auth";
24 5 100 100     26 $path = "/$path" if length($path) && $path !~ m,^/,;
25             }
26             elsif ($path =~ m,^//,) {
27 1         2 $uri .= "//"; # XXX force empty auth
28             }
29 12 100       31 unless (length $uri) {
30 4         16 $path =~ s,(:), URI::Escape::escape_char($1),e while $path =~ m,^[^:/?\#]+:,;
  1         4  
31             }
32 12         24 $path =~ s,([?\#]), URI::Escape::escape_char($1),eg;
  2         5  
33 12         19 $uri .= $path;
34 12 100       21 if (defined $query) {
35 3         8 $query =~ s,(\#), URI::Escape::escape_char($1),eg;
  1         3  
36 3         6 $uri .= "?$query";
37             }
38 12 100       25 $uri .= "#$frag" if defined $frag;
39 12         57 $uri;
40             }
41              
42             1;
43              
44             __END__