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 5     5   124263 use strict;
  5         9  
  5         153  
4 5     5   19 use warnings;
  5         6  
  5         374  
5              
6             our $VERSION = '5.35';
7              
8 5     5   28 use Exporter 5.57 'import';
  5         106  
  5         232  
9             our @EXPORT_OK = qw(uri_split uri_join);
10              
11 5     5   1758 use URI::Escape ();
  5         9  
  5         2774  
12              
13             sub uri_split {
14 129     129 1 294769 return $_[0] =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,;
15             }
16              
17             sub uri_join {
18 31     31 1 601 my($scheme, $auth, $path, $query, $frag) = @_;
19 31 100       74 my $uri = defined($scheme) ? "$scheme:" : "";
20 31 100       70 $path = "" unless defined $path;
21 31 100       75 if (defined $auth) {
    100          
22 10         26 $auth =~ s,([/?\#]), URI::Escape::escape_char($1),eg;
  4         11  
23 10         15 $uri .= "//$auth";
24 10 100 100     44 $path = "/$path" if length($path) && $path !~ m,^/,;
25             }
26             elsif ($path =~ m,^//,) {
27 1         3 $uri .= "//"; # XXX force empty auth
28             }
29 31 100       55 unless (length $uri) {
30 4         34 $path =~ s,(:), URI::Escape::escape_char($1),e while $path =~ m,^[^:/?\#]+:,;
  1         5  
31             }
32 31         72 $path =~ s,([?\#]), URI::Escape::escape_char($1),eg;
  2         3  
33 31         50 $uri .= $path;
34 31 100       55 if (defined $query) {
35 8         14 $query =~ s,(\#), URI::Escape::escape_char($1),eg;
  1         2  
36 8         11 $uri .= "?$query";
37             }
38 31 100       48 $uri .= "#$frag" if defined $frag;
39 31         112 $uri;
40             }
41              
42             1;
43              
44             __END__