Хелперы

В Issak используются различные хелперы. Подключены такие группы, как «math», «string», «array», «conditional».

Хелперы - это помощники, которые могут что-то сделать с переменными. Они бывают двух видов: строчные и блочные.

Строчные хелперы выглядят очень просто, они начинаются с имени хелпера и могут включать в себя N переменных:

{{helper var1 var2}}

Блочные хелперы выглядят так: #имяхелпера - начало блока, /имяхелпера - конец блока. У блочного хелпера есть начало, тело с текстом и переменными и конец. Как правило, блочные хелперы используются для вывода какого-либо текста в зависимости от условий.

{{#helper var1 var2}}

Текст и переменные

{{/helper}}

Условия

Сравнение переменной

В качестве примера попросим пользователя указать свой пол и запишем в переменную gender. В зависимости от пола нужно направить разный текст. Для этого используется блочный хелпер сравнения eq:

В примере видно, как открывается блочный хелпер #eq, затем используется переменная gender и строка Женский. Затем закрывается блочный хелпер /eq. Помимо переменных сравниваться могут строки и числа.

У хелперов предназначенных для сравнения можно использовать специальный разделитель {{else}}. В нашем примере в переменную gender записана строка "Женский", поэтому будет выводиться текст "Спасибо, что написала", во всех остальных случаях - "Спасибо, что написал".

Сравнение "больше" или "меньше"

Для сравнения чисел существует два блочных хелпера #gt и #lt:

gt - больше, чем lt - меньше, чем

Cпросим у пользователя его возраст и запишем в переменную age. Открываем блочный хелпер #gt, указываем переменную age и возраст 17. Если введенный возраст 18 и старше - выводится сообщение "Добро пожаловать!", во всех остальных случаях с помощью разделителя {{else}} выводится сообщение "Ботом можно пользоваться только с 18 лет".

Чтобы сравнивать включительно числу, существуют дополнительные хелперы #gte и #lte

gte - больше или равно lte - меньше или равно

Блочные хелперы можно вкладывать друг в друга. Объединим переменную gender и age.

Часто используемые хелперы сравнения

#eq - равенство переменных

{{#eq var1 var2}}
Переменная var1 равна переменной var2
{{else}}
Переменные не равны (необязательный текст)
{{/eq}}

#lt - первая переменная меньше второй

{{#lt var1 var2}}
Переменная var1 меньше, чем var2
{{else}}
Переменная var2 меньше, чем var1 (необязательный текст)
{{/lt}}

#lte - первая переменная меньше либо равна второй

{{#lte var1 var2}}
Переменная var1 меньше либо равна var2
{{/lte}}

#gt - первая переменная больше второй

{{#gt var1 var2}}
Переменная var1 больше, чем var2
{{else}}
Переменная var2 больше, чем var1 (необязательный текст)
{{/gt}}

#gte - первая переменная больше либо равна второй

{{#gte var1 var2}}
Переменная var1 больше либо равна var2
{{/gte}}

#if - если переменная var1 существует и в ней не ложное значение

{{#if var1}}
Необходимый текст
{{else}}
Обратное условие (необязательный текст)
{{/if}}

Дополнительные хелперы сравнения можно посмотреть здесь.

Математика

Isaak поддерживает хелперы для основных математических операций. Все хелперы математики - линейные.

Сложение

Для сложения чисел используется хелпер add:

{{add var1 var2}}

Как и в блочных хелперах, можно использовать литеральные значения:

{{add 200 45}}

В результате в сообщении будет выведен текст "245".

Вычитание

Для вычитания одного числа из другого используется хелпер subtract:

{{subtract var1 var2}}
{{subtract 245 200}}

Умножение

Для умножения используется хелпер multiply:

{{multiply var1 var2}}

Деление

Для деления используется хелпер divide:

{{divide var1 var2}}

Дополнительные математические хелперы можно посмотреть здесь.

Комментарии

Существует специальный хелпер для комментариев, которые не будут отправлены пользователю. Для этого достаточно обернуть текст:

{{!-- Комментарий, который не увидит пользователь --}}

Использование комментариев удобно для пояснения, если у вас большое количество используемых хелперов.

Массивы и списки

Вывод массивов

{{#each}}{{/each}}

Для того, чтобы вывести все элементы массива используется хелпер #each. Например, осуществляем запрос к некой базе, получаем из нее список с породами кошек и записываем в переменную breeds. Далее пользователь должен выбрать нужную породу.

[
"Сиамская",
"Мейн-кун",
"Бенгальская"
]

Каждый из элементов массива внутри хелпера #each доступен как переменная this:

Выберите породу:
{{#each breeds}}
{{this}}
{{/each}}

Сообщение, которое увидит пользователь: Выберите породу: Сиамская Мейн-кун Бенгальская

Также внутри хелпера #each доступна специальная переменная @index, которая присваивает элементу порядковый номер, стоит заметить, что элементы массива нумеруются начиная с нуля. Внутри #each можно использовать любые линейные хелперы.

Выберите породу:
{{#each breeds}}
{{sum @index}}. {{this}}
{{/each}}

Сообщение, которое увидит пользователь: Выберите породу: 0. Сиамская 1. Мейн-кун 2. Бенгальская

Выберите породу:
{{#each breeds}}
{{sum @index 1}}. {{this}}
{{/each}}

Сообщение, которое увидит пользователь: Выберите породу: 1. Сиамская 2. Мейн-кун 3. Бенгальская

{{itemAt}}

Данный хелпер возвращает элемент массива с заданным индексом. Например:

Выберите дату посещения:
{{!-- dates: ['9-30', '10-00', '10-30'] --}}

{{#each response.body.dates}}
{{itemAt this.dates 1}}
{{/each}}

{{!-- results in: '10-00' --}}

Более подробная информация о встроенных хелперах с примерами находится по этой ссылке.

setVar

Служит для того, чтобы динамически устанавливать переменную внутри шаблона. Пример:

В разделе "Список переменных" создана переменная cat, установим ей значение "Рыжий":

{{setVar "cat" "Рыжий"}}

Запишем значение из другой переменной. Например, существует переменная cat с первоначальным значением "Рыжий"

{{setVar "cat" catColor}}

Last updated