NAME
Aion::Format - расширение Perl для форматирования чисел, раскрашивания вывода и т.п.
VERSION
0.1.0
SYNOPSIS
use Aion::Format;
trappout { print "123\n" } # => 123\n
coloring "#red ↬ #r\n" # => \e[31m ↬ \e[0m\n
trappout { printcolor "#red ↬ #r\n" } # => \e[31m ↬ \e[0m\n
DESCRIPTION
Утилиты для форматирования чисел, раскрашивания вывода и т.п.
SUBROUTINES
coloring ($format, @params)
Раскрашивает текст с помощью escape-последовательностей, а затем заменяет формат на sprintf. Названия цветов используются из модуля Term::ANSIColor. Для RESET используйте #r или #R.
coloring "#{BOLD RED}###r %i", 6 # => \e[1;31m##\e[0m 6
printcolor ($format, @params)
Как coloring, но печатает отформатированную строку на стандартный вывод.
warncolor ($format, @params)
Как coloring, но печатает отформатированную строку в STDERR.
trapperr { warncolor "#{green}ACCESS#r %i\n", 6 } # => \e[32mACCESS\e[0m 6\n
accesslog ($format, @params)
Пишет в STDOUT используя для форматирования функцию coloring и добавляет префикс с датой-временем.
trappout { accesslog "#{green}ACCESS#r %i\n", 6 } # ~> \[\d{4}-\d{2}-\d{2} \d\d:\d\d:\d\d\] \e\[32mACCESS\e\[0m 6\n
errorlog ($format, @params)
Пишет в STDERR используя для форматирования функцию coloring и добавляет префикс с датой-временем.
trapperr { errorlog "#{red}ERROR#r %i\n", 6 } # ~> \[\d{4}-\d{2}-\d{2} \d\d:\d\d:\d\d\] \e\[31mERROR\e\[0m 6\n
p ($target; %properties)
p из Data::Printer с предустановленными настройками.
Вместо неудобного первого параметра используется просто скаляр.
Необязательный параметр %properties позволяет перекрывать настройки.
trapperr { p +{cat => 123} } # ~> cat.+123
np ($target; %properties)
np из Data::Printer с предустановленными настройками.
Вместо неудобного первого параметра используется просто скаляр.
Необязательный параметр %properties позволяет перекрывать настройки.
np +{cat => 123} # ~> cat.+123
flesch_index_human ($flesch_index)
Преобразует индекс Флеша в русскоязычную метку с помощью шага 10.
flesch_index_human -10 # => несвязный русский текст
flesch_index_human -3 # => для академиков
flesch_index_human 0 # => для академиков
flesch_index_human 1 # => для академиков
flesch_index_human 15 # => для профессионалов
flesch_index_human 99 # => для 11 лет (уровень 5-го класса)
flesch_index_human 100 # => для младшеклассников
flesch_index_human 110 # => несвязный русский текст
from_radix ($string, $radix)
Анализирует натуральное число в указанной системе счисления. По умолчанию используется 64-значная система.
Для цифр используются символы 0–9, A–Z, a–z, _ и –. Эти символы используются до и для 64 значной системы. Для цифр после 64 значной системы используются символы кодировки CP1251.
from_radix "A-C" # -> 45004
from_radix "A-C", 64 # -> 45004
from_radix "A-C", 255 # -> 666327
eval { from_radix "A-C", 256 }; $@ # ~> The number system 256 is too large. Use NS before 256
to_radix ($number, $radix)
Преобразует натуральное число в заданную систему счисления. По умолчанию используется 64-значная система.
to_radix 10_000 # => 2SG
to_radix 10_000, 64 # => 2SG
to_radix 10_000, 255 # => dt
eval { to_radix 0, 256 }; $@ # ~> The number system 256 is too large. Use NS before 256
kb_size ($number)
Добавляет числовые цифры и добавляет единицу измерения.
kb_size 102 # => 102b
kb_size 1024 # => 1k
kb_size 1023 # => 1\x{a0}023b
kb_size 1024*1024 # => 1M
kb_size 1000_002_000_001_000 # => 931\x{a0}324G
replace ($subject, @rules)
Несколько преобразований текста за один проход.
my $s = replace "33*pi",
qr/(?<num> \d+)/x => sub { "($+{num})" },
qr/\b pi \b/x => sub { 3.14 },
qr/(?<op> \*)/x => sub { " $& " },
;
$s # => (33) * 3.14
matches ($subject, @rules)
Синоним replace. DEPRECATED.
my $s = matches "33*pi",
qr/(?<num> \d+)/x => sub { "($+{num})" },
qr/\b pi \b/x => sub { 3.14 },
qr/(?<op> \*)/x => sub { " $& " },
;
$s # => (33) * 3.14
nous ($templates)
Упрощенный язык регулярных выражений для распознавания текста в документах HTML.
- Убирает все пробелы в начале и конце.
- С начала каждой строки удаляются 4 пробела или 0-3 пробела и табуляция.
- Пробелы в конце строки и строки пробелов заменяются на
\s*. - Все переменные в
{{ var }}заменяются на.*?. Т.е. распознаётся всё. - Все переменные в
{{> var }}заменяются на[^<>]*?. Т.е. не распознаются html-теги. - Все переменные в
{{: var }}заменяются на[^\n]*. Т.е. должно быть на одной строке. - Выражения в двойных квадратных скобках (
[[ ... ]]) могут не существовать. - В качестве круглых скобок используются двойные скобки (
(( ... ))). ||- или.
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 = {%+};
$result # --> {author_link => "/to/book/link", author_name => "A. Alis", title => "Grivus campf"}
num ($number)
Добавляет разделители между цифрами числа.
num +0 # => 0
num -1000.3 # => -1 000.3
Разделителем по умолчанию является неразрывный пробел. Установите разделитель и десятичную точку так же, как:
num [1000, "#"] # => 1#000
num [-1000.3003003, "_", ","] # => -1_000,3003003
См. также Number::Format.
rim ($number)
Переводит положительные целые числа в римские цифры.
rim 0 # => N
rim 4 # => IV
rim 6 # => VI
rim 50 # => L
rim 49 # => XLIX
rim 505 # => DV
Римские цифры после 1000:
rim 49_000 # => XLIX M
rim 49_000_000 # => XLIX M M
rim 49_009_555 # => XLIX IX DLV
См. также:
- Roman это простой конвертер.
- Math::Roman это еще один конвертер.
- Convert::Number::Roman имеет ООП-интерфейс.
- Number::Convert::Roman – еще один интерфейс ООП.
- Text::Roman конвертирует стандартные и милхарные римские числа.
- Roman::Unicode использует цифры ↁ (5 000), ↂ (1000) и так далее.
- Acme::Roman добавляет поддержку римских цифр в коде Perl (
I + II -> III), но использует только операции+,-и*. - Date::Roman — это объектно-ориентированное расширение Perl для обработки дат в римском стиле, но с арабскими цифрами (id 3 702).
- DateTime::Format::Roman – средство форматирования римских дат, но с арабскими цифрами (5 Kal Jun 2003).
round ($number, $decimal)
Округляет число до указанного десятичного знака.
round 1.234567, 2 # -> 1.23
round 1.235567, 2 # -> 1.24
sinterval ($interval)
Создает человекочитаемый интервал.
Ширина результата — 12 символов.
sinterval 6666.6666 # => 01:51:06.667
sinterval 6.6666 # => 00:00:06.667
sinterval .333 # => 0.33300000 s
sinterval .000_33 # => 0.3300000 ms
sinterval .000_000_33 # => 0.330000 mks
sround ($number, $digits)
Оставляет $digits цифр после последнего нуля (сам 0 не учитывается).
По умолчанию $digits равен 2.
sround 10.11 # -> 10
sround 12.11 # -> 12
sround 100.11 # -> 100
sround 133.11 # -> 133
sround 0.00012 # -> 0.00012
sround 1.2345 # -> 1.2
sround 1.2345, 3 # -> 1.23
trans ($s)
Транслитерирует русский текст, оставляя только латинские буквы и тире.
trans "Мир во всём Мире!" # => mir-vo-vsjom-mire
transliterate ($s)
Транслитерирует русский текст.
transliterate "Мир во всём Мире!" # => Mir vo vsjom Mire!
trapperr (&block)
Ловушка для STDERR.
trapperr { print STDERR "Stars: ✨" } # => Stars: ✨
См. также IO::Capture::Stderr.
trappout (&block)
Ловушка для STDOUT.
trappout { print "Stars: ✨" } # => Stars: ✨
См. также IO::Capture::Stdout.
TiB ()
Константа равна одному тебибайту.
TiB # -> 2**40
GiB ()
Константа равна одному гибибайту.
GiB # -> 2**30
MiB ()
Константа равна одному мебибайту.
MiB # -> 2**20
KiB ()
Константа равна одному кибибайту.
KiB # -> 2**10
xxL ()
Максимальная длина данных LongText mysql и mariadb. L - large.
xxL # -> 4*GiB-1
xxM ()
Максимальная длина данных MediumText mysql и mariadb. M - medium.
xxM # -> 16*MiB-1
xxR ()
Максимальная длина текста данных mysql и mariadb. R - regularity.
xxR # -> 64*KiB-1
xxS ()
Максимальная длина данных TinyText mysql и mariadb. S - small.
xxS # -> 255
to_str (;$scalar)
Преобразование в строку Perl без интерполяции.
to_str "a'\n" # => 'a\\'\n'
[map to_str, "a'\n"] # --> ["'a\\'\n'"]
from_str (;$one_quote_str)
Преобразование из строки Perl без интерполяции.
from_str "'a\\'\n'" # => a'\n
[map from_str, "'a\\'\n'"] # --> ["a'\n"]
SUBROUTINES/METHODS
AUTHOR
Yaroslav O. Kosmina dart@cpan.org
LICENSE
⚖ GPLv3
COPYRIGHT
Aion::Format is copyright © 2023 by Yaroslav O. Kosmina. Rusland. All rights reserved.