Базовые типы данных
В данном разделе описываются все базовые типы данных, используемые в шаблонном движке JuniperBot.
У некоторых типов данных методы могут иметь квоту вызовов. Квота означает сколько раз можно вызвать этот метод за шаблон. Вызовы, превышающие указанную квоту, будут проигнорированы и не будут выполнять никаких действий.
Примитивы
Самыми базовыми выражениями являются примитивы, посмотрите на таблицу ниже:
| Название | Примеры |
|---|---|
| Дробные числа | -1.5, 5.7, 1.0 |
| Целые числа | -10, 56, 0 |
| Нулевая ссылка | null |
| Логический тип | true или false |
| Строка | "строка в двойных скобочках"'строка в апострофах' |
| Символ | 'ф' |
Списки
Объявить список можно либо упорядоченным перечислением элементов списка явно, либо указанием диапазона значений.
Для объявления упорядоченных списков значений или результатов выражений необходимо явно перечислить их через запятую в квадратных скобках:
[1, 2, 3]Список, объявленный таким способом, является изменяемым. В таких списках доступны методы для добавления, удаления, замены элементов и очистки списка.
Для объявления списка через диапазон значений необходимо указать лишь начальный и конечный элемент списка:
[1..3]Список, объявленный таким способом, неизменяемый. Это своего рода кортеж, который удобно использовать, например, в циклах.
Внимание
Максимально допустимый размер списка ― 250 элементов.
Методы
Конвертация типов не применяется для методов списков:
{{ [1..3].contains(1) }} - {{ [1..3].contains('1') }}
Данный шаблон вернёт true - false.
При работе со списками, особенно в методах, подразумевающих поиск, всегда следует учитывать тип данных.
Внимание
Модифицирующие методы доступны только для списков, созданных упорядоченным перечислением элементов по примеру выше.
| Метод | Параметры | Возвращает | Описание |
|---|---|---|---|
add(Элемент) | Число Строка Логический | Логический | Добавляет указанный элемент в конец списка. Возвращает true, если элемент был добавлен. |
addIfAbsent(Элемент) | Число Строка Логический | Логический | Добавляет указанный элемент в конец списка, если этого элемента в списке нет. Возвращает true, если элемент был добавлен. |
addAll(Список) | Список | Логический | Добавляет все элементы указанного списка в конец текущего списка. Возвращает true, если в результате этого список был изменён. |
replace(Индекс, Элемент) | Индекс: Число Элемент: Число Строка Логический | Число Строка Логический | Заменяет элемент по указанному индексу на указанное значение. Возвращает предыдущее значение этой позиции. |
remove(Элемент) | Число Строка Логический | Логический | Удаляет первый найденный элемент из списка с указанным значением. Возвращает true, если элемент был удалён. |
removeAll(Список) | Список | Логический | Удаляет все найденные элементы из списка. Возвращает true, если был удалён хотя бы один элемент. |
removeAt(Индекс) | Число | Число Строка Логический | Удаляет элемент по указанному индексу. Возвращает удалённый элемент списка. |
contains(Элемент) | Число Строка Логический | Логический | Проверяет наличие указанного элемента в списке. Возвращает true, если такой элемент существует. |
containsAll(Список) | Список | Логический | Проверяет наличие всех указанных элементов в списке. Возвращает true, если указанные элементы существуют. |
containsAny(Список) | Список | Логический | Проверяет наличие хотя бы одного из указанных элементов в списке. Возвращает true, если хотя бы один указанный элемент существует. |
indexOf(Элемент) | Число Строка Логический | Число | Возвращает индекс элемента в списке или -1 если такого элемента нет. |
countOf(Элемент) | Число Строка Логический | Число | Возвращает количество вхождений указанного элемента в список. |
clear() | - | - | Полностью очищает список. |
Карта (Map)
Карта — это структура данных, в которой значения хранятся не по одному как в списке выше, а в паре "ключ - значение". Ключом карты может быть любой идентификатор или строка, а значением — уже любое выражение. Объявляются карты следующим образом:
{ key1: 'value1', 'key 2': 'value2' }
Имейте в виду, что идентификаторы, представленные ключами, не являются названиями переменных, они всегда конвертируются в их строковое представление. Таким образом идентификатор key1 внутри карты будет строкой "key1".
Внимание
Максимально допустимый размер карты ― 250 пар.
Методы
Конвертация типов не применяется для методов карт:
{% set map = { key: 1 } %}
{{ map.containsValue(1) }} - {{ map.containsValue('1') }}
Данный шаблон вернёт true - false.
При работе с картами, особенно в методах, подразумевающих поиск значений, всегда следует учитывать тип данных.
Внимание
Указанные методы доступны только для карт, созданных вручную по примеру выше.
| Метод | Параметры | Возвращает | Описание |
|---|---|---|---|
put(Ключ, Значение) | Ключ: Строка Значение: Число Строка Логический | Число Строка Логический | Добавляет в карту новую пару ключ-значение. Если указанный ключ уже есть в карте, заменяет его значение на новое. Возвращает предыдущее значение указанного ключа или null если такого не было |
putAll(Карта) | Карта | - | Добавляет все элементы указанной карты в текущую. |
putIfAbsent(Ключ, Значение) | Ключ: Строка Значение: Число Строка Логический | Число Строка Логический | Добавляет новую пару ключ-значение только если значения для указанного ключа в карте ещё нет. Возвращает существующее значение указанного ключа или null если такого не было |
remove(Ключ) | Строка | Число Строка Логический | Удаляет пару ключ-значение по указанному ключу. Возвращает предыдущее значение указанного ключа или null если такого не было |
remove(Ключ, Значение) | Ключ: Строка Значение: Число Строка Логический | Логический | Удаляет пару ключ-значение по указанному ключу и значению. Возвращает true если удаление успешно |
containsKey(Ключ) | Строка | Логический | Возвращает true, если карта содержит указанный ключ. |
containsValue(Значение) | Число Строка Логический | Логический | Возвращает true если есть хотя бы один ключ с указанным значением. |
clear() | - | - | Полностью очищает карту |
DateTime
Этот тип данных описывает объект даты и времени и операции над ними.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
millis | Число | Миллисекунды |
millisOfDay | Число | Миллисекунды дня |
millisOfSecond | Число | Миллисекунды секунды |
secondOfDay | Число | Секунда дня |
secondOfMinute | Число | Секунда минуты |
minuteOfDay | Число | Минута дня |
minuteOfHour | Число | Минута часа |
hourOfDay | Число | Час дня |
dayOfMonth | Число | День месяца |
dayOfWeek | Число | День недели |
dayOfYear | Число | День в году |
weekOfWeekyear | Число | Неделя в году |
weekyear | Число | Год с учетом недели * |
monthOfYear | Число | Месяц в году |
year | Число | Год |
yearOfCentury | Число | Год века |
yearOfEra | Число | Год эпохи |
centuryOfEra | Число | Век эпохи |
era | Число | Эпоха |
zoneOffset | Число | Смещение часового пояса в миллисекундах |
isAfterNow | Логический | true если дата в будущем |
isBeforeNow | Логический | true если дата в прошлом |
* Год с учётом недели
В определенные годы первая неделя начинается в декабре, например, в декабре 1997 года. В другие годы первая неделя начинается с 53-й недели предыдущего года, как, например, в январе 1999 года. В течение этих нескольких дней, когда номер недели текущего года относится к предыдущему году, свойства year и weekyear возвращают разные значения.
Методы
Методы ниже не модифицирует текущий экземпляр, а возвращают новый.
| Метод | Параметры | Возвращает | Описание |
|---|---|---|---|
plusMillis(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество миллисекунд |
plusSeconds(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество секунд |
plusMinutes(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество минут |
plusHours(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество часов |
plusDays(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество дней |
plusWeeks(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество недель |
plusMonths(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество месяцев |
plusYears(Значение) | Число | DateTime | Возвращает копию этой даты плюс указанное количество лет |
minusMillis(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество миллисекунд |
minusSeconds(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество секунд |
minusMinutes(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество минут |
minusHours(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество часов |
minusDays(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество дней |
minusWeeks(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество недель |
minusMonths(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество месяцев |
minusYears(Значение) | Число | DateTime | Возвращает копию этой даты минус указанное количество лет |
isAfter(Дата) | DateTime | Логический | Является ли эта дата позже указанной |
isBefore(Дата) | DateTime | Логический | Является ли эта дата раньше указанной |