[![Actions Status](https://github.com/darviarush/perl-aion-format/actions/workflows/test.yml/badge.svg)](https://github.com/darviarush/perl-aion-format/actions) [![MetaCPAN Release](https://badge.fury.io/pl/Aion-Format.svg)](https://metacpan.org/release/Aion-Format) # NAME Aion::Format - Perl extension for formatting numbers, colorizing output and so on # VERSION 0.0.10 # SYNOPSIS ```perl 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 A utilities for formatting numbers, colorizing output and so on. # SUBROUTINES ## coloring ($format, @params) Colorizes the text with escape sequences, and then replaces the format with sprintf. Color names using from module `Term::ANSIColor`. For `RESET` use `#r` or `#R`. ```perl coloring "#{BOLD RED}###r %i", 6 # => \e[1;31m##\e[0m 6 ``` ## printcolor ($format, @params) As `coloring`, but it print formatted string. ## warncolor ($format, @params) As `coloring`, but print formatted string to `STDERR`. ```perl trapperr { warncolor "#{green}ACCESS#r %i\n", 6 } # => \e[32mACCESS\e[0m 6\n ``` ## accesslog ($format, @params) It write in STDOUT `coloring` returns with prefix datetime. ```perl 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) It write in STDERR `coloring` returns with prefix datetime. ```perl 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 ``` ## flesch_index_human ($flesch_index) Convert flesch index to russian label with step 10. ```perl 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) Parses a natural number in the specified number system. 64-number system used by default. For digits using symbols 0-9, A-Z, a-z, _ and -. This symbols using before and for 64 NS. For digits after 64 using symbols from CP1251 encoding. ```perl 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) Converts a natural number to a given number system. 64-number system used by default. ```perl 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) Adds number digits and adds a unit of measurement. ```perl 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 ``` ## matches ($subject, @rules) Multiple text transformations in one pass. ```perl my $s = matches "33*pi", qr/(? \d+)/x => sub { "($+{num})" }, qr/\b pi \b/x => sub { 3.14 }, qr/(? \*)/x => sub { " $& " }, ; $s # => (33) * 3.14 ``` ## nous ($templates) A simplified regex language for text recognition in HTML documents. 1. All spaces from the beginning and end are removed. 2. From the beginning of each line, 4 spaces or 0-3 spaces and a tab are removed. 3. Spaces at the end of the line and whitespace lines are replaced with `\s*`. 4. All variables in `{{ var }}` are replaced with `.*?`. Those. recognize everything. 4. All variables in `{{> var }}` are replaced with `[^<>]*?`. Those. do not recognize html tags. 4. All variables in `{{: var }}` are replaced with `[^\n]*`. Those. must be on the same line. 5. Expressions in double square brackets (`[[ ... ]]`) may not exist. 5. Double parentheses (`(( ... ))`) are used as parentheses. 5. `||` - or. ```perl my $re = nous [ q{

author_link }}>{{: author_name }}
{{ title }}

}, q{
  • ((Comments: {{ comments }}, last from {{ last_comment_posted }}.||Added comment))
  • {{ author_name }} [[ (translate: {{ interpreter_name }})]] ({{ author_email }})
  • Year: {{ posted }} }, q{
  • Annotation:
    {{ annotation_html }} }, q{ {{ html }} }, ]; my $s = q{

    A. Alis
    Grivus campf

    Any others... This book text! }; $s =~ $re; my $result = {%+}; $result # --> {author_link => "/to/book/link", author_name => "A. Alis", title => "Grivus campf"} ``` ## num ($number) Adds separators between digits of a number. ```perl num +0 # => 0 num -1000.3 # => -1 000.3 ``` Separator by default is no-break space. Set separator and decimal point same as: ```perl num [1000, "#"] # => 1#000 num [-1000.3003003, "_", ","] # => -1_000,3003003 ``` See also `Number::Format`. ## rim ($number) Translate positive integers to **roman numerals**. ```perl rim 0 # => N rim 4 # => IV rim 6 # => VI rim 50 # => L rim 49 # => XLIX rim 505 # => DV ``` **roman numerals** after 1000: ```perl rim 49_000 # => XLIX M rim 49_000_000 # => XLIX M M rim 49_009_555 # => XLIX IX DLV ``` See also: * `Roman` is simple converter. * `Math::Roman` is another converter. * `Convert::Number::Roman` is OOP interface. * `Number::Convert::Roman` is another OOP interface. * `Text::Roman` convert standart and milhar roman numbers. * `Roman::Unicode` use digits ↁ (5 000), ↂ (1000), and so on. * `Acme::Roman` added support roman numerals in perl code (`I + II -> III`), but use `+`, `-` and `*` operations only. * `Date::Roman` is Perl OO extension for handling roman style dates, but with arabic numbers (id 3 702). * `DateTime::Format::Roman` is roman date formatter, but with arabic numbers (5 Kal Jun 2003). ## round ($number, $decimal) Rounds a number to the specified decimal place. ```perl round 1.234567, 2 # -> 1.23 round 1.235567, 2 # -> 1.24 ``` ## sinterval ($interval) Generates human-readable spacing. Width of result is 12 symbols. ```perl 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) Leaves `$digits` (0 does not count) wherever they are relative to the point. Default `$digits` is 2. ```perl sround 10.11 # -> 10 sround 100.11 # -> 100 sround 0.00012 # -> 0.00012 sround 1.2345 # -> 1.2 sround 1.2345, 3 # -> 1.23 ``` ## trans ($s) Transliterates the russian text, leaving only Latin letters and dashes. ```perl trans "Мир во всём Мире!" # => mir-vo-vsjom-mire ``` ## transliterate ($s) Transliterates the russian text. ```perl transliterate "Мир во всём Мире!" # => Mir vo vsjom Mire! ``` ## trapperr (&block) Trap for STDERR. ```perl trapperr { print STDERR 123 } # => 123 ``` See also `IO::Capture::Stderr`. ## trappout (&block) Trap for STDOUT. ```perl trappout { print 123 } # => 123 ``` See also `IO::Capture::Stdout`. ## TiB () The constant is one tebibyte. ```perl TiB # -> 2**40 ``` ## GiB () The constant is one gibibyte. ```perl GiB # -> 2**30 ``` ## MiB () The constant is one mebibyte. ```perl MiB # -> 2**20 ``` ## KiB () The constant is one kibibyte. ```perl KiB # -> 2**10 ``` ## xxL () Maximum length in data LongText mysql and mariadb. L - large. ```perl xxL # -> 4*GiB-1 ``` ## xxM () Maximum length in data MediumText mysql and mariadb. M - medium. ```perl xxM # -> 16*MiB-1 ``` ## xxR () Maximum length in data Text mysql and mariadb. R - regularity. ```perl xxR # -> 64*KiB-1 ``` ## xxS () Maximum length in data TinyText mysql and mariadb. S - small. ```perl xxS # -> 255 ``` ## to_str (;$scalar) Converts to string perl without interpolation. ```perl to_str "a'\n" # => 'a\\'\n' [map to_str, "a'\n"] # --> ["'a\\'\n'"] ``` ## from_str (;$one_quote_str) Converts from string perl without interpolation. ```perl from_str "'a\\'\n'" # => a'\n [map from_str, "'a\\'\n'"] # --> ["a'\n"] ``` # SUBROUTINES/METHODS # AUTHOR Yaroslav O. Kosmina # LICENSE ⚖ **GPLv3** # COPYRIGHT Aion::Format is copyright © 2023 by Yaroslav O. Kosmina. Rusland. All rights reserved.