Aion-Format
view release on metacpan or search on metacpan
t/aion/format.t view on Meta::CPAN
#
# ## 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;
#
# **РимÑкие ÑиÑÑÑ** поÑле 1000:
#
( run in 0.592 second using v1.01-cache-2.11-cpan-5735350b133 )