«

Формы множеств

listTpl { "kids": [ { "name": "Маша", "sex": 0, "eats": { "apples": 11 } }, { "name": "Настя", "sex": 0, "eats": { "apples": 5, "bananas": 2 } }, { "name": "Тарас", "sex": 1, "eats": { "borsch": 1 } } ] }
<div class="content"> <!-- Темплейтируем данные --> <e on="init" do="template">listTpl</e> <exec> <dispatch e="init"> { "kids": [ { "name": "Маша", "sex": 0, "eats": { "apples": 11 } }, { "name": "Настя", "sex": 0, "eats": { "apples": 5, "bananas": 2 } }, { "name": "Тарас", "sex": 1, "eats": { "borsch": 1 } } ] } </dispatch> </exec> </div> <template id="zTemplates"> <template id="listTpl"> <ul> <!-- Перебираем элементы массива "kids"--> <foreach from="kids" item="kid"> <li> <!-- Выводим имя --> <value>kid.name</value> <!-- Тут мы хитрим. Мы будем использовать формы множеств английского языка для определения подходящего глагола для разных полов. Первый параметр ("eats") будет ключом в таблице форм множеств, второй - количеством, третий указывает на правило, которое будет использовано для нахождения нужной формы множеств. --> <value>"eats"^kid.sex^1</value> <!-- Перебираем массив "eats" --> <foreach from="kid.eats" item="amount" key="food"> <!-- Запоминаем контент в переменную "txt". Эта переменная локальна исключительно для тега <li> --> <capture to="txt"> <!-- Выводим количество и правильную форму множеств. Ключи форм множеств берутся из названия ключа объекта с данными --> <span class="hl"><value>amount</value></span> <value>food^amount^7</value> </capture> </foreach> <!-- Вставляем контент, который мы запоминали раннее --> <flush>txt.join(", ")</flush> </li> </foreach> </ul> </template> <!-- Описываем ключи и значения для обычного контента --> <plurals rule="7"> { "apples": [ "яблоко", "яблока", "яблок" ], "bananas": [ "банан", "банана", "бананов" ], "borsch": [ "тарелку борща", "тарелки борща", "тарелок борща" ] } </plurals> <!-- и для хитрого варианта с определением пола --> <plurals rule="1"> { "eats": [ "съел", "съела" ] } </plurals> </template>