Виртуальные методы в PROScript
Виртуальные методы — это встроенные функции, которые позволяют работать с данными напрямую: изменять строки, фильтровать массивы, получать значения из объектов и другое. Методы можно применять неоднократно, вызывая их один за другим.
Методы вызываются через . после значения или переменной. Например:
[% name = ‘Sendsay’ %]
[% name.length() %]
Результат:
7
Виртуальные методы делают код компактнее и понятнее, а также позволяют выполнять операции без дополнительных циклов и проверок.
В этой статье собраны часто используемые методы для разных типов данных.
Виртуальные методы для работы со строками
Эти методы помогают анализировать и изменять текстовые значения.
list
Преобразует строку в массив из одного элемента. В примере используется функция dump() — она выводит значение полностью, чтобы можно было увидеть структуру данных.
[% dump('qwerty'.list()) %]
[% 'qwerty'.list().size() %]
Результат:
[ "qwerty" ]
1
hash
Возвращает хеш-объект, где строка хранится как значение.
[% dump('aaaa'.hash()) %]
Результат:
{ "value" : "aaaa" }
length
Возвращает длину строки.
[% 'aaaa'.length() %]
Результат:
4
size
Всегда возвращает 1 для любой строки или переменной с типом "строка" (string).
[% 'text'.size() %]
Результат:
1
defined
Проверяет, определена ли переменная. Возвращает true или false.
[% name = 'Sendsay' %]
[% name.defined() %]
Результат:
true
match
Ищет в строке совпадения по регулярному выражению. Регулярное выражение — это специальный шаблон для поиска текста. Используя его, можно находить слова, цифры, фрагменты текста по определённым правилам. В примере используется регулярное выраж ение (\w+) (\w+) — две группы слов, разделённые пробелом.
[% name = 'Larry Wall' %]
[% matches = name.match('(\w+) (\w+)') %]
[% matches.1 %], [% matches.0 %]
Результат:
Larry, Wall
Если совпадений нет, метод вернёт false.
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
Результат:
foobarbaz
split
Разделяет строку на массив по указанному в функции символу.
[% dump('2018-09-06'.split('-')) %]
Результат:
[ "2018", "09", "06" ]
chunk
Превращает строку в массив указанной длины.
[% ccard_no = "1234567824683579";
dump(ccard_no.chunk(4));
ccard_no.chunk(4).join()
%]
Результат:
1234 5678 2468 3579
substr (p,l)
Возвращает подстроку указанной длины (l) начиная с определённой позиции (p).
[% str='foo bar baz wiz waz woz' %]
[% str.substr(4, 3) %]
Результат:
bar
Виртуальные методы для работы с массивами
Эти методы применяются к массивам — чтобы получать, изменять или сортировать элементы.
Перед началом работы массив нужно инициализировать:
[% array = [] %]
В примерах используются следующие массивы:
[% a1=[1,3,5,223,44,322,404,2,25] %]
[% a2=[1,3,5,223,44,322,44,2,2,44,3,33,44543,443] %]
[% a3=[44,322,44,2,2,44,33,33,443,443] %]
Нумерация элементов массива начинается с 0.
Методы, изменяющие массивы, не изменяют данные подписчика, а работают только с переменными внутри письма.
join
Выводит элементы массива в строку с указанным разделителем (по умолчанию — пробел).
[% items = ['foo','bar','baz'] %]
[% items.join(', ') %]
Результат:
foo, bar, baz
Обратиться к элементу массива по индексу
[% a3.item(1) %]
[% a3[1] %]
[% a3.1 %]
Результат:
322