Aion-Format

 view release on metacpan or  search on metacpan

t/aion/format/url.pm  view on Meta::CPAN

# 		$$x = from_url_param $v;
# 	}
# 
# 	\%param
# }
# 
# #@category parse url
# 
# sub _parse_url ($) {
# 	my ($link) = @_;
# 	$link =~ m!^
# 		( (?<proto> \w+ ) : )?
# 		( //
# 			( (?<user> [^:/?\#\@]* ) :
# 		  	  (?<pass> [^/?\#\@]*  ) \@  )?
# 			(?<domain> [^/?\#]* )			 )?
# 		(  / (?<path>  [^?\#]* ) )?
# 		(?<part> [^?\#]+ )?
# 		( \? (?<query> [^\#]*  ) )?
# 		( \# (?<hash>  .*	   ) )?
# 	\z!xn;
# 	return %+;
# }
# 
# # 1 - set / in each page, if it not file (*.*), or 0 - unset
# use config DIR => 0;
# use config ONPAGE => "off://off";
# 
# # Парсит и нормализует url
# sub parse_url($;$$) {
# 	my ($link, $onpage, $dir) = @_;
# 	$onpage //= ONPAGE;
# 	$dir //= DIR;
# 	my $orig = $link;
# 
# 	my %link = _parse_url $link;
# 	my %onpage = _parse_url $onpage;
# 
# 	if(!exists $link{path}) {
# 		$link{path} = join "", $onpage{path}, $onpage{path} =~ m!/\z!? (): "/", $link{part};
# 		delete $link{part};
# 	}
# 
# 	if(exists $link{proto}) {}
# 	elsif(exists $link{domain}) {
# 		$link{proto} = $onpage{proto};
# 	}
# 	else {
# 		$link{proto} = $onpage{proto};
# 		$link{user} = $onpage{user} if exists $onpage{user};
# 		$link{pass} = $onpage{pass} if exists $onpage{pass};
# 		$link{domain} = $onpage{domain};
# 	}
# 
# 	# нормализуем
# 	$link{proto} = lc $link{proto};
# 	$link{domain} = lc $link{domain};
# 	$link{dom} = $link{domain} =~ s/^www\.//r;
# 	$link{path} = lc $link{path};
# 
# 	my @path = split m!/!, $link{path}; my @p;
# 
# 	for my $p (@path) {
# 		if($p eq ".") {}
# 		elsif($p eq "..") {
# 			#@p or die "Выход за пределы пути";
# 			pop @p;
# 		}
# 		else { push @p, $p }
# 	}
# 
# 	@p = grep { $_ ne "" } @p;
# 
# 	if(@p) {
# 		$link{path} = join "/", "", @p;
# 		if($link{path} =~ m![^/]*\.[^/]*\z!) {
# 			$link{dir} = $`;
# 			$link{file} = $&;
# 		} elsif($dir) {
# 			$link{path} = $link{dir} = "$link{path}/";
# 		} else {
# 			$link{dir} = "$link{path}/";
# 		}
# 	} elsif($dir) {
# 		$link{path} = "/";
# 	} else { delete $link{path} }
# 
# 	$link{orig} = $orig;
# 	$link{onpage} = $onpage;
# 	$link{link} = join "", $link{proto}, "://",
# 		exists $link{user} || exists $link{pass}? ($link{user},
# 			exists $link{pass}? ":$link{pass}": (), '@'): (),
# 		$link{dom},
# 		$link{path},
# 		length($link{query})? ("?", $link{query}): (),
# 		length($link{hash})? ("#", $link{hash}): (),
# 	;
# 
# 	return \%link;
# }
# 
# # Нормализует url
# sub normalize_url($;$$) {
# 	parse_url($_[0], $_[1], $_[2])->{link}
# }
# 
# 1;
# 
# __END__
# 
# =encoding utf-8
# 
# =head1 NAME
# 
# Aion::Format::Url - utilities for encoding and decoding URLs
# 
# =head1 SYNOPSIS
# 
# 	use Aion::Format::Url;
# 	
# 	to_url_params {a => 1, b => [[1,2],3,{x=>10}]} # => a&b[][]&b[][]=2&b[]=3&b[][x]=10



( run in 1.074 second using v1.01-cache-2.11-cpan-71847e10f99 )