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