Хелперы
В 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
Was this helpful?