Aion-Format

 view release on metacpan or  search on metacpan

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

use common::sense; use open qw/:std :utf8/;  use Carp qw//; use Cwd qw//; use File::Basename qw//; use File::Find qw//; use File::Slurper qw//; use File::Spec qw//; use File::Path qw//; use Scalar::Util qw//;  use Test::More 0.98;  use String::Diff q...
# # NAME
# 
# Aion::Format::Url - утилиты для кодирования и декодирования URL-адресов
# 
# # SYNOPSIS
# 
subtest 'SYNOPSIS' => sub { 
use Aion::Format::Url;

local ($::_g0 = do {to_url_params {a => 1, b => [[1,2],3,{x=>10}]}}, $::_e0 = "a&b[][]&b[][1]=2&b[1]=3&b[2][x]=10"); ::ok $::_g0 eq $::_e0, 'to_url_params {a => 1, b => [[1,2],3,{x=>10}]} # => a&b[][]&b[][1]=2&b[1]=3&b[2][x]=10' or ::diag ::_string_d...

local ($::_g0 = do {normalize_url "?x", "http://load.er/fix/mix?y=6"}, $::_e0 = "http://load.er/fix/mix?x"); ::ok $::_g0 eq $::_e0, 'normalize_url "?x", "http://load.er/fix/mix?y=6"  # => http://load.er/fix/mix?x' or ::diag ::_string_diff($::_g0, $::...

# 
# # DESCRIPTION
# 
# Утилиты для кодирования и декодирования URL-адресов.
# 
# # SUBROUTINES
# 
# ## to_url_param (;$scalar)
# 
# Экранирует `$scalar` для части поиска URL.
# 
::done_testing; }; subtest 'to_url_param (;$scalar)' => sub { 
local ($::_g0 = do {to_url_param "a b"}, $::_e0 = "a+b"); ::ok $::_g0 eq $::_e0, 'to_url_param "a b" # => a+b' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

local ($::_g0 = do {[map to_url_param, "a b", "🦁"]}, $::_e0 = do {[qw/a+b %F0%9F%A6%81/]}); ::is_deeply $::_g0, $::_e0, '[map to_url_param, "a b", "🦁"] # --> [qw/a+b %F0%9F%A6%81/]' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef ...

# 
# ## to_url_params (;$hash_ref)
# 
# Генерирует поисковую часть URL-адреса.
# 
::done_testing; }; subtest 'to_url_params (;$hash_ref)' => sub { 
local $_ = {a => 1, b => [[1,2],3,{x=>10}]};
local ($::_g0 = do {to_url_params}, $::_e0 = "a&b[][]&b[][1]=2&b[1]=3&b[2][x]=10"); ::ok $::_g0 eq $::_e0, 'to_url_params  # => a&b[][]&b[][1]=2&b[1]=3&b[2][x]=10' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# 1. Ключи со значениями `undef` отбрасываются.
# 1. Значение `1` используется для ключа без значения.
# 1. Ключи преобразуются в алфавитном порядке.
# 

local ($::_g0 = do {to_url_params {k => "", n => undef, f => 1}}, $::_e0 = "f&k="); ::ok $::_g0 eq $::_e0, 'to_url_params {k => "", n => undef, f => 1}  # => f&k=' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## from_url_params (;$scalar)
# 
# Парсит поисковую часть URL-адреса.
# 
::done_testing; }; subtest 'from_url_params (;$scalar)' => sub { 
local $_ = 'a&b[][]&b[][1]=2&b[1]=3&b[2][x]=10';
local ($::_g0 = do {from_url_params}, $::_e0 = do {{a => 1, b => [[1,2],3,{x=>10}]}}); ::is_deeply $::_g0, $::_e0, 'from_url_params  # --> {a => 1, b => [[1,2],3,{x=>10}]}' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## from_url_param (;$scalar)
# 
# Используется для парсинга ключей и значений в параметре URL.
# 
# Обратный к `to_url_param`.
# 
::done_testing; }; subtest 'from_url_param (;$scalar)' => sub { 
local $_ = to_url_param '↬';
local ($::_g0 = do {from_url_param}, $::_e0 = "↬"); ::ok $::_g0 eq $::_e0, 'from_url_param  # => ↬' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## parse_url ($url, $onpage, $dir)
# 
# Парсит и нормализует URL.
# 
# * `$url` — URL-адрес или его часть для парсинга.
# * `$onpage` — URL-адрес страницы с `$url`. Если `$url` не завершен, то он дополняется отсюда. Необязательный. По умолчанию использует конфигурацию `$o...
# * `$dir` (bool): 1 — нормализовать URL-путь с "/" на конце, если это каталог. 0 — без «/».
# 
::done_testing; }; subtest 'parse_url ($url, $onpage, $dir)' => sub { 
my $res = {
    proto  => "off",
    dom    => "off",
    domain => "off",
    link   => "off://off",
    orig   => "",
    onpage => "off://off",
};

local ($::_g0 = do {parse_url ""}, $::_e0 = do {$res}); ::is_deeply $::_g0, $::_e0, 'parse_url "" # --> $res' or ::diag ::_struct_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

$res = {



( run in 0.831 second using v1.01-cache-2.11-cpan-39bf76dae61 )