---
url: https://docs.juniper.bot/message-templates/advanced/code-islands.md
description: Описание синтаксиса островков кода шаблонного движка JuniperBot.
---

# Островки кода { #code-islands }

В самом простом виде шаблон представляет собой текст, который будет отправлен сообщением в исходном виде как есть.

Однако, вся суть шаблонизатора в возможности форматировать этот текст заданным образом, использовать внутри него
управляющие конструкции (условия или циклы) и даже выполнять некоторые действия. Для этого используются так называемые "островки кода".

## Код { #code }

Островки кода всегда начинаются с `{%` и заканчиваются `%}`, очень просто. Внутри таких островков кода используются [теги](tags),
в числе которых есть управляющие конструкции (условия, циклы), объявление переменных и многое другое.

```template
{% tag %}
```

Каждый островок кода может выполнять только одну какую-либо операцию или объявлять часть управляющей конструкции.

Логическая последовательность формируется использованием множества отдельных островков кода на каждую отдельно взятую операцию или часть управляющей конструкции.

## Контроль символов пробела { #whitespace }

С синтаксисом островков кода связана еще одна синтаксическая возможность, называемая контролем символов пробела.
Эта возможность позволяет убрать все пробелы и переводы строк перед или после островков кода. Для достижения этого,
добавьте символ минуса `-` в начало или конец островка кода. Например:

```template
{% if (1 == 1) -%}     текст     {%- endif %}
```

Такой код генерирует сообщение `текст` без пробелов вокруг этого слова.

## Вывод выражений { #output }

В шаблонном движке JuniperBot существует только один способ вывести значение переменной или результат вычисления какого-либо выражения.
Это достигается с помощью операции вывода, как показано ниже:

```template
{{ выражение }}
```

Обратите внимание, что островки вывода также поддерживают контроль символов пробела:

```template
{{- выражение -}}
```

## Комментарии { #comments }

В шаблонном движке JuniperBot можно добавить комментарий, который не будет распечатан в результирующем сообщении:

```template
{# Это содержимое комментария.
И оно может быть многострочным. #}
```

Опять же, здесь также поддерживается контроль символов пробела:

```template
{#- Ваш замечательный комментарий -#}
```
