Перейти к основному содержимому
Обновлено: 

Виртуальные методы в PROScript

Виртуальные методы — это встроенные функции, которые позволяют работать с данными напрямую: изменять строки, фильтровать массивы, получать значения из объектов и другое.

Методы вызываются через . после значения или переменной. Например:

[% name = ‘Sendsay’ %]
[% name.length() %] # вернёт 7

Виртуальные методы делают код компактнее и понятнее, а также позволяют выполнять операции без дополнительных циклов и проверок.

В этой статье собраны часто используемые методы для разных типов данных.

Виртуальные методы для работы со строками

Эти методы помогают анализировать и изменять текстовые значения.

list

Преобразует строку в массив из одного элемента.

[% 'qwerty'.list().size() %]  # вернёт 1

hash

Возвращает хеш-объект, где строка хранится как значение.

[% dump('aaaa'.hash()) %]

Результат:

{ "value" : "aaaa" }

length

Возвращает длину строки.

[% 'aaaa'.length() %] #вернёт 4

size

Всегда возвращает 1 для строковых переменных.

defined

Проверяет, определена ли переменная. Возвращает true или false.

match

Ищет в строке совпадения по регулярному выражению.

[% name = 'Larry Wall' %]
[% matches = name.match('(\w+) (\w+)') %]
[% matches.1 %], [% matches.0 %] # Wall, Larry

Если совпадений нет, метод вернёт false:

[% "We're not worthy!" IF name.match('Larry Wall') %]

[% IF (matches = name.match('(\w+) (\w+)')) %]
pattern matches: [% matches.join(', ') %]
[% ELSE %]
pattern does not match
[% END %]

repeat

Повторяет строку или значение переменной заданное количество раз.

[% name = 'foo' %]
[% name.repeat(3) %] # foofoofoo

replace

Заменяет все подходящие фрагменты на новое значение.

[% name = 'foo, bar & baz' %]
[% name.replace('\W+', '_') %] # foo_bar_baz

remove

Удаляет все части строки, соответствующие заданному фрагменту.

[% name = 'foo, bar & baz' %]
[% name.remove('\W+') %] # foobarbaz

split

Разделяет строку на массив по указанному символу.

[% dump('2018-09-06'.split('-')) %]

Результат:

[ "2018", "09", "06" ]

chunk

Разбивает строку на части указанного размера.

[% ccard_no = "1234567824683579";
ccard_no.chunk(4).join()
%]

Результат:

1234 5678 2468 3579

substr

Возвращает подстроку указанной длины начиная с определённой позиции.

[% str 'foo bar baz wiz waz woz' %]
[% str.substr(4, 3) %] # bar

Виртуальные методы для работы с массивами

Эти методы применяются к массивам — чтобы получать, изменять или сортировать элементы.

item
list
hash
push
pop
unshift
shift
max
size
defined
first
last
reverse
grep
join
sort
nsort
unique
import
merge
slice
splice

Виртуальные методы для работы с объектами

Методы для работы с объектами помогают получать ключи, значения и управлять содержимым.

item
hash
size
each
keys
values
items
pairs
list
exists
defined
delete
draft
import
sort
nsort