"Block is Object" - це шаблонний енжайн, що поєднує простий синтаксис, гнучкість і велика кількість можливостей. Енжайн забезпечує ідеальне відділення оформлення від вихідного коду, мова абсолютно не містить конструкцій мов програмування. Енжайн сприяє модульному програмуванню, так як роздруківка кожного блоку задається окремим класом. Нижче наведено повний перелік можливостей:
Далі наводяться приклади. Результат роботи шаблону генерується в реальному часі на сайті.
Як роздрукувати шаблон
Шаблон має вигляд:
Hello, Compiled World!
Hello, Interpreted World!
Скомпільований шаблон можна побачити тут.
Як вставити в шаблон значення змінної
Шаблон має вигляд:
Ціни знижені на 20%!
Скомпільований шаблон можна побачити тут.
Як повторювати html-блок в циклі
Шаблон має вигляд:
Скомпільований шаблон можна побачити тут.
Як ховати текст
Шаблон має вигляд:
Скомпільований шаблон можна побачити тут.
Вибір варіантів оформлення
Якщо при друку рядки бази даних необхідно міняти її оформлення в залежності від типу запису.
Шаблон має вигляд:
Іван, користувач, 34 повідомлень.
Василь, модератор, 125 повідомлень.
Ігор, користувач, 54 повідомлень.
Дмитро, користувач, 4 повідомлень.
Скомпільований шаблон можна побачити тут.
бібліотеки шаблонів
Можна створювати бібліотеки шаблонів, що містять фрагменти html-коду. Ці фрагменти можна потім вставляти в інші шаблони. Вставку слід робити програмно, т. Е. Фрагмент html треба передати шаблоном як одну із змінних. Спеціальною інструкцією include в шаблоні немає.
Шаблон-бібліотека повинна мати розширення .lib.bo.
Інший шаблон, який використовує бібліотеку:
Класифікація змінних
Якщо кількість змінних велике, їх можна організувати в дерево, використовуючи масиви із строковими ключами. Вкладеність масивів довільна. Шаблон має вбудований механізм для звернення до дерева. Ім'я змінної є шлях в цьому дереві. Окремі папки поділяються точками.
Шаблон має вигляд:
Скомпільований шаблон можна побачити тут.
Збігаються імена змінних у вкладених блоках
Припустимо, є сітуцація, коли два блоки, вкладені одна в одну, вводять змінні з однаковими іменами. У цьому випадку змінна внутрішнього блоку замінює змінну зовнішнього блоку. Якщо ви хочете звернутися до змінної зовнішнього блоку, їй необхідно привласнити окремий простір імен. Присвоєння простору імен відбувається повністю в шаблону і не потребує доопрацювання програмного коду, тому програміст може не турбуватися про співпадаючих іменах змінних.
Шаблон має вигляд:
Скомпільований шаблон можна побачити тут.
Використання компілятора шаблонів
Якщо шаблон простий, тобто він містить тільки змінні, він працює так. Блок в шаблоні перетвориться компілятором в об'єкт, що має метод printb. Щоб надрукувати блок, ми викликаємо метод printb. передаючи йому масив зі значеннями змінних, які є в блоці. Приклад.
Що виконується, якщо всередині блоку знаходиться ще один блок. У масив змінних додається спеціальний об'єкт, званий Renderer -ом. При друку блоку (того, який всередині іншого блоку), у Renderer -а викликається метод printr. якому передається блок як об'єкт з методом printb. Приклад.
Є кілька готових Renderer -ів, що виконують типові операції: розгортання масиву, друк одного з декількох варіантів тексту, текст, який може бути видимим або невидимим.
Нижче наведено вихідний код стандартних Renderer ів.
Синтаксис мови шаблонів
name - ім'я, містить букви, цифри і підкреслення і повинно починатися з літери або підкреслення (регулярний вираз для імені: [a-zA-Z_ \ x7f- \ xff] [a-zA-Z0-9_ \ x7f- \ xff \. ] *).