Aion-Format

 view release on metacpan or  search on metacpan

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

# 
::done_testing; }; subtest 'kb_size ($number)' => sub { 
local ($::_g0 = do {kb_size 102}, $::_e0 = "102b"); ::ok $::_g0 eq $::_e0, 'kb_size 102             # => 102b' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {kb_size 1024}, $::_e0 = "1k"); ::ok $::_g0 eq $::_e0, 'kb_size 1024            # => 1k' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {kb_size 1023}, $::_e0 = "1\x{a0}023b"); ::ok $::_g0 eq $::_e0, 'kb_size 1023            # => 1\x{a0}023b' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {kb_size 1024*1024}, $::_e0 = "1M"); ::ok $::_g0 eq $::_e0, 'kb_size 1024*1024       # => 1M' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {kb_size 1000_002_000_001_000}, $::_e0 = "931\x{a0}324G"); ::ok $::_g0 eq $::_e0, 'kb_size 1000_002_000_001_000    # => 931\x{a0}324G' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## replace ($subject, @rules)
# 
# Несколько преобразований текста за один проход.
# 
::done_testing; }; subtest 'replace ($subject, @rules)' => sub { 
my $s = replace "33*pi",
    qr/(?<num> \d+)/x   => sub { "($+{num})" },
    qr/\b pi \b/x       => sub { 3.14 },
    qr/(?<op> \*)/x     => sub { " $& " },
;

local ($::_g0 = do {$s}, $::_e0 = "(33) * 3.14"); ::ok $::_g0 eq $::_e0, '$s # => (33) * 3.14' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## matches ($subject, @rules)
# 
# Синоним `replace`. **DEPRECATED**.
# 
::done_testing; }; subtest 'matches ($subject, @rules)' => sub { 
my $s = matches "33*pi",
    qr/(?<num> \d+)/x   => sub { "($+{num})" },
    qr/\b pi \b/x       => sub { 3.14 },
    qr/(?<op> \*)/x     => sub { " $& " },
;

local ($::_g0 = do {$s}, $::_e0 = "(33) * 3.14"); ::ok $::_g0 eq $::_e0, '$s # => (33) * 3.14' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# ## nous ($templates)
# 
# Упрощенный язык регулярных выражений для распознавания текста в документах HTML.
# 
# 1. Убирает все пробелы в начале и конце.
# 2. С начала каждой строки удаляются 4 пробела или 0-3 пробела и табуляция.
# 3. Пробелы в конце строки и строки пробелов заменяются на `\s*`. 
# 4. Все переменные в `{{ var }}` заменяются на `.*?`. Т.е. распознаётся всё.
# 4. Все переменные в `{{> var }}` заменяются на `[^<>]*?`. Т.е. не распознаются html-теги.
# 4. Все переменные в `{{: var }}` заменяются на `[^\n]*`. Т.е. должно быть на одной строке.
# 5. Выражения в двойных квадратных скобках (`[[ ... ]]`) могут не существовать.
# 5. В качестве круглых скобок используются двойные скобки (`(( ... ))`).
# 5. `||` - или.
# 
::done_testing; }; subtest 'nous ($templates)' => sub { 
my $re = nous [
q{
	<body>
	<center>
	<h2><a href={{> author_link }}>{{: author_name }}</a><br>
	{{ title }}</h2>
},
q{
    <li><A HREF="{{ comments_link }}">((Comments: {{ comments }}, last from {{ last_comment_posted }}.||Added comment))</A>
	<li><a href="{{ author_link }}">{{ author_name }}</a>
	[[ (translate: {{ interpreter_name }})]]
	 (<u>{{ author_email }}</u>) 
	<li>Year: {{ posted }}
},
q{
	<li><B><font color=#393939>Annotation:</font></b><br><i>{{ annotation_html }}</i></ul>
	</ul></font>
	</td></tr>
},
q{
	<!----------- The work itself --------------->
	{{ html }}
	<!------------------------------------------->
},
];

my $s = q{
<body>
<center>
<h2><a href=/to/book/link>A. Alis</a><br>
Grivus campf</h2>

Any others...

<!----------- The work itself --------------->
This book text!
<!------------------------------------------->
};

$s =~ $re;
my $result = {%+};
local ($::_g0 = do {$result}, $::_e0 = do {{author_link => "/to/book/link", author_name => "A. Alis", title => "Grivus campf"}}); ::is_deeply $::_g0, $::_e0, '$result # --> {author_link => "/to/book/link", author_name => "A. Alis", title => "Grivus c...

# 
# ## num ($number)
# 
# Добавляет разделители между цифрами числа.
# 
::done_testing; }; subtest 'num ($number)' => sub { 
local ($::_g0 = do {num +0}, $::_e0 = "0"); ::ok $::_g0 eq $::_e0, 'num +0         # => 0' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {num -1000.3}, $::_e0 = "-1 000.3"); ::ok $::_g0 eq $::_e0, 'num -1000.3    # => -1 000.3' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# Разделителем по умолчанию является неразрывный пробел. Установите разделитель и десятичную точку так же, как:
# 

local ($::_g0 = do {num [1000, "#"]}, $::_e0 = "1#000"); ::ok $::_g0 eq $::_e0, 'num [1000, "#"]         		# => 1#000' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {num [-1000.3003003, "_", ","]}, $::_e0 = "-1_000,3003003"); ::ok $::_g0 eq $::_e0, 'num [-1000.3003003, "_", ","]   # => -1_000,3003003' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;

# 
# См. также `Number::Format`.
# 
# ## rim ($number)
# 
# Переводит положительные целые числа в **римские цифры**.
# 
::done_testing; }; subtest 'rim ($number)' => sub { 
local ($::_g0 = do {rim 0}, $::_e0 = "N"); ::ok $::_g0 eq $::_e0, 'rim 0       # => N' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {rim 4}, $::_e0 = "IV"); ::ok $::_g0 eq $::_e0, 'rim 4       # => IV' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {rim 6}, $::_e0 = "VI"); ::ok $::_g0 eq $::_e0, 'rim 6       # => VI' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {rim 50}, $::_e0 = "L"); ::ok $::_g0 eq $::_e0, 'rim 50      # => L' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {rim 49}, $::_e0 = "XLIX"); ::ok $::_g0 eq $::_e0, 'rim 49      # => XLIX' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;
local ($::_g0 = do {rim 505}, $::_e0 = "DV"); ::ok $::_g0 eq $::_e0, 'rim 505     # => DV' or ::diag ::_string_diff($::_g0, $::_e0); undef $::_g0; undef $::_e0;



( run in 1.215 second using v1.01-cache-2.11-cpan-97f6503c9c8 )