Разметка шаблонов

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

Разметка же содержит всего два логических элемента - Поля и Блоки.

Разметка текста происходит путем вставки в него специальных последовательностей символов назваемых Тегами.

Теги

Все теги начинаются и заканчиваются символами \\ (Две косые черты). Обратите внимание в какую сторону должен быть наклон.

Этот символ выбран не случайно. Дело в том, что он один из немногих на клавиатуре находится на одной и той же клавише для русской и английской раскладки. Кроме того в обоих раскладках его ввод не требует нажатия клавиши shift. По этому мы считаем использование это символа в тегах наиболее удобным, с точки зрения его ввода на клавиатуре.

Тег в нашей разметке имеет следующие вид:

\\Текстовая метка\\

Где Текстовая метка - это любой набор символов, кроме \ (обозначающих границы тега). Текстовые метки будут затем использоваться в редакторе при настройке правил обработки шаблона. По этому мы рекомендуем давать им осмысленные имена. Например текстовая метка может быть:

\\ФИО Клиента\\

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

Поля

Поле задает место в документе, в которое в последствии будет подставлен какой-то текст. Поле задается тегом содержащим Имя поля:

\\Имя поля\\

Имя поля затем будет использоваться в редакторе при настройке правил обработки шаблона. Можно задавать несколько полей с одним и тем же именем. Это будет считаться одним полем и к нему будет применяться одно и тоже правило. То есть в тексте в поля с одинаковым именем будет подставлено одно и тоже значение. Это верно даже если поле находится внутри блока или иерархии блоков. Исключением будет только если блок с полем итерируется в цикле. Тогда будет применено правило для каждой итерации цикла, и значения будут соответствующие.

Имена полей не должны совпадать с именами блоков

Блоки

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

  • сокрытие - блок может быть скрыть или показан
  • итерация - блок может быть повторен заданное количество раз

Блок задается двумя тегами содержащими Имя блока:

\\Имя блока\\Какой-то длинный текст внутри блока, который необходимо скрыть или показать.\\!Имя блока\\

Теги с Именем блока обозначают начало и конец блока. Обратите внимание, что закрывающий тег блока содержит в начале символ !, это важно. Без правильного закрывающего тега такая разметка будет восприниматься программой не как блок, а как два поля с одинаковым именем.

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

Пример размеченного текста

Договор № \\Номер договора.

\\Сторона 1\\, с одной стороны, и \\Сторона 2\\, с другой стороны, заключили договор о нижеследующем:
....
Сумма договора составляет \\Сумма договора\\.
\\Уплата НДС\\
НДС не уплачивается в связи с применением стороной один упрощенной системы налогообложения.
\\!Уплата НДС\\
...
Реквизиты сторон.
\\Сторона 1\\
ИНН: \\ИНН Стороны 1\\

Данный текст содержит один блок Уплата НДС и четыре поля:

  • Сторона 1
  • Сторона 2
  • Сумма договора
  • ИНН Стороны 1

Причем поле Сторона 1 повторяется в тексте два раза.

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