Page History
...
- Простой - в полном соответствии своему названию, является самым простым блоком. Он используется для указания статичных частей формата. Например, если нужно в формате использовать набор символов, который будет всегда присутствовать в итоговом результате. Представим, что требуется задать формат для наименования объекта Продукт с типом Авиабилет, в котором оно будет состоять просто из слова Авиабилет. Строка формата при этом будет выглядеть так:
Panel |
---|
Авиабилет |
Для простого блока не требуется каким-либо образом выделять свою структуру. Статичные символы просто вносятся в формат как есть.
2. Ключевое слово - является блоком, в котором указанное ключевое слово, при применении формата, будет заменено на определенное значение. Этот блок имеет следующую структуру:
Panel |
---|
{<наименование_атрибута>=<значение_атрибута>} |
Как видно, блок начинается с символа { (открывающая фигурная скобка) и заканчивается символом } (закрывающая фигурная скобка). Внутри блока расположены атрибуты. При задании атрибута необходимо внести его наименование, затем символ = (равно), после чего указать значение атрибута. Блок ключевого слова поддерживает несколько атрибутов:
id - наименование ключевого слова
default - значение по умолчанию, используемое в случае, если вычисленное значение пустое
separator - используется для указания разделителя значений, в случае если ключевое слово отвечает за коллекцию значений
pattern - шаблон, для форматирования вычисленного значения, например, если ключевое слово отвечает за дату или число
- locale - используется для указания языка, на котором отображать локализуемое значение
Из всех указанных атрибутов, обязательным к указанию является лишь атрибут id. Остальные атрибуты являются опциональными. В качестве значения, указываемого для атрибута default можно использовать любой набор блоков. Если в блоке нужно указать несколько атрибутов, они должны быть отделены друг от друга символом | (вертикальная черта). При этом, последовательность, в которой выстраиваются атрибуты, не имеет значения. Предположим, что нужно задать формат наименования для продукта, содержащего его номер. Формат, при этом, будет выглядеть так:
Panel |
---|
{id=product:number} |
Как видно из примера, значение для атрибута id указывается в виде двух элементов, соединенных символом : (двоеточие):
Panel |
---|
<объект>:<свойство> |
Элемент объект определяет, какому объекту принадлежит свойство, которое необходимо отобразить, а элемент свойство определяется какое именно свойство этого объекта нужно отобразить. В примере выше, указано, что нужно отобразить свойство number, принадлежащее объекту product (список всех объектов и их свойств приведен в конце документа).
Вернемся к примеру из описания простого блока. После слова Авиабилет требуется указать его номер, а в случае, если номер отсутствует, вместо номера нужно подставить значение без номера. Формат примет следующий вид:
Panel |
---|
Авиабилет |
...
{id=product:number|default=без |
...
номера} |
В случае, если у билета номер присутствует, результирующая строка будет выглядеть, например, так:
Panel |
---|
Авиабилет |
...
1234567890 |
А в случае, если у билета номера нет, то вместо номера будет подставлено указанное значение по умолчанию:
Panel |
---|
Авиабилет |
...
без |
...
номера |
Чтобы не загромождать шаблон, уберем из него атрибут default и немного усложним пример, добавив новое требование: в конце строки должна быть подставлена дата вылета, отделенная от номера символом - (тире):
Авиабилет {id=product:number} - {id=product:start_date}
...
При этом, если атрибут locale указать у элемента, значение которого является не локализуемым, то такое значение будет транслитерировано с кириллицы на латиницу в соответствии с ГОСТ Р 52535.1-2006.
3.Опциональный - специальный блок, который в случае пустого значения будет полностью исключен из итоговой строки. Его полезно использовать, когда в формат нужно включить определенные данные, отсутствие которых у форматируемого объекта является допустимым. Этот блок имеет структуру, схожую со структурой предыдущего блока:
Panel |
---|
[<наименование_атрибута>=<значение_атрибута>] |
Блок начинается с символа [ (открывающая квадратная скобка) и заканчивается символом ] (закрывающая квадратная скобка). Внутри блока расположены атрибуты, имеющие идентичный формат. Опциональный блок поддерживает следующие атрибуты:
value - значение
padding - набор статичных символов, подставляемых перед значением, но только в случае, если это не первая запись в строке
prefix - набор статичных символов, подставляемых перед значением
suffix - набор статичных символов, подставляемых после значения
В указанном наборе атрибутов обязательным является только атрибут value. В качестве его значения можно указывать любой набор блоков. Например, можно использовать блок ключевое слово. Снова вернемся к прошлому примеру. Последняя версия формата выглядела так:
Panel |
---|
Авиабилет |
...
{id=product:number} |
...
- |
...
{id=product:start_date|pattern=yyyy.MM.dd} |
Посмотрим, как будет выглядеть итоговая строка в случае, если дата вылета у авиабилета не задана:
Авиабилет
...
1234567890
...
-
В силу того, что даты вылета в авиабилете нет, ее значение в итоговую строку подставлено не будет. Однако символ - (тире), отделяющий дату от номера останется, т.к. он задан как статичный. Хочется этого избежать. Исправим формат и внесем в него опциональный блок:
...
В силу того, что символ - (тире) теперь является частью опционального блока, этот символ не будет добавлен в итоговую строку.
4. Условный блок - предназначен для вывода разных результатов, которые зависят от вычисленного значения. Работа данного блока заключается в том, что сначала вычисляется значение, а затем проверяется набор указанных ожидаемых результатов для этого значения. В случае, если вычисленное значение совпадает с одним из указанных результатов, тогда в итоговую строку будет выведено значение, назначенное этому результату. Этот блок имеет структуру, схожую со структурой предыдущих блоков:
<<наименование_атрибута>=<значение_атрибута>>
...