Aion-Format

 view release on metacpan or  search on metacpan

lib/Aion/Format.md  view on Meta::CPAN

```

## replace ($subject, @rules)

Несколько преобразований текста за один проход.

```perl
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**.

```perl
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.

1. Убирает все пробелы в начале и конце.
2. С начала каждой строки удаляются 4 пробела или 0-3 пробела и табуляция.
3. Пробелы в конце строки и строки пробелов заменяются на `\s*`. 
4. Все переменные в `{{ var }}` заменяются на `.*?`. Т.е. распознаётся всё.
4. Все переменные в `{{> var }}` заменяются на `[^<>]*?`. Т.е. не распознаются html-теги.
4. Все переменные в `{{: var }}` заменяются на `[^\n]*`. Т.е. должно быть на одной строке.
5. Выражения в двойных квадратных скобках (`[[ ... ]]`) могут не существовать.
5. В качестве круглых скобок используются двойные скобки (`(( ... ))`).
5. `||` - или.

```perl
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)

Добавляет разделители между цифрами числа.

```perl
num +0         # => 0
num -1000.3    # => -1 000.3
```

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

```perl
num [1000, "#"]         		# => 1#000
num [-1000.3003003, "_", ","]   # => -1_000,3003003
```

См. также `Number::Format`.

## rim ($number)

Переводит положительные целые числа в **римские цифры**.

```perl
rim 0       # => N
rim 4       # => IV
rim 6       # => VI
rim 50      # => L
rim 49      # => XLIX
rim 505     # => DV
```

**Римские цифры** после 1000:



( run in 1.218 second using v1.01-cache-2.11-cpan-5735350b133 )