Урок 12. Handlebars и regexp

Handlebars — действия с переменными

Если просто, handlebars — это набор команд, которые что-то делают с переменными. Сами команды называются хелперами.

Помимо того, что хелперы существуют, их надо ещё подключить. В конструкторе это делают разработчики, а список всех подключенных хелперов мы добавим в документацию чуть позже. Пока что самые часто используемые:

  1. sum — сложение;
  2. subtract — вычитание;
  3. multiply — умножение;
  4. divide — деление;
  5. toRub — округление до двух знаков после запятой;
  6. newLineToSpace — замена перевода строки на пробел.

Разбираемся с математикой

Например, я хочу посчитать дневной минимум воды. Рассчитывается как 0,3 л на 10 кг массы тела. Получаем формулу:

m / 10 * 0,3

У пользователя бота я узнаю вес в килограммах и записываю в переменную m. Дальше мне нужно сделать два действия: разделить на 10 и умножить на 0,3.

1. Ставлю компонент Запись, записываю 10 в переменную ten.

2. В переменную var записываю 0.3.

3. Добавляю Запись, где в переменную water записываю первое действие:

{{divide m ten}}

3. Ниже ставлю вторую, где в water записываю второе действие:

{{multiply water var}}

В тексте вывожу переменную {{water}}: у меня получилось сделать простой расчёт.

Действия на экране в конструкторе и диалог с ботом.

После запятой получилось много цифр

1,575 л — не очень хорошая цифра. Поэтому нужно применить toRub. Для этого я вновь обращаюсь к Записи:

{{toRub water}}

На выходе я получаю значение с двумя знаками после запятой:

Регулярные выражения

В интернете есть много статей на тему регулярных выражений. Нам с ними не сравниться. На самом деле, в боте регулярные выражения используются редко и в ограниченных сферах.

Регулярное выражение — это фильтр. Оно пропускает только совпадающее значение.

Диапазоны чисел

Возьмём простую задачу: нужно не пускать в бота пользователей до 21 года.

Регулярные выражения не умеют работать с числами. Их раскладываем на цифры: 12 — это цифра 1 и цифра 2. Поэтому разбиваем возраст от 0 до 21 на две группы по количеству знаков: от 0 до 9 и от 10 до 20. Числа от 10 до 20 разбиваем на две подгруппы: от 10 до 19 и 20.

В итоге получаем 3 группы, которые нужно написать регулярными выражениями:

  1. от 0 до 9;
  2. от 10 до 19;
  3. 20.

Из таблицы регулярных выражений берём диапазон

[0-7] — Цифра между 0 и 7

Значит, с диапазоном между 0 и 9 просто: [0-9].

Второй группой мы выделили числа, которые начинаются с 1. Для первой цифры диапазон не нужен, а вторая может быть от 0 до 9. Получаем: 1[0-9].

В третью группу включается только число 20.

Группы собираются в скобки и разделяются:

([0-9])|(1[0-9])|20
Что делать со знаками после запятой

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

\,

Если нам нужно написать интервал от 0 до 20,99, дописываем экранированную запятую и интервалы для дробной части:

([0-9]\,[0-9][0-9])|(1[0-9]\,[0-9][0-9])|(20\,[0-9][0-9])

Интервалы удобно использовать в Развилке.


Статья находится в разработке, в ближайшее время дополнится новой информацией.