anspa: (Default)
[personal profile] anspa
вот в кои-то веки надо мне кусок темплейта реализовать (html) в котором цикл. ну например вывести список неких предметов с характеристиками из базы данных. т.е. темплейт - это html файл где "вставлены" переменные - куда потом вставлять значения из кода. с обычными переменными нет проблем. а как бы поизящнее это сделать чтоб цикл был в коде, а темплейт описывал эту iterating часть, какое псевдоописание сделать. пока не сообразил.

Date: 2012-01-27 11:19 am (UTC)
From: [identity profile] otstavnov.com (from livejournal.com)
Надо смотреть языки описания экранных бланков (ключевая фраза что-то типа "screen form description language") для СУБД. Не то, чтобы я (когда еще интересовался этим) видел какие-то изящные решения... но, может, что-то придумали.

Date: 2012-01-27 11:32 am (UTC)
From: [identity profile] otstavnov.com (from livejournal.com)
Десятиминутное исследование подсказало такой вариант: сделать имена "индексных" переменных отличными по форме, а отличия по форме регулярными.

Чисто условно, если ты считаешь именем "обычной" переменной любое $[A-Za-z0-0]*, считай именем "индексной переменной $$*[A-Za-z0-0]*, а количество символов доллара --- уровнем вложенности цикла + 1.

Если нужны вложенные бланки, считай уровень вложенности относительным по отношению к файлу с бланком.

Date: 2012-01-27 01:29 pm (UTC)
From: [identity profile] anspa.livejournal.com
Я примерно так и начал делать. Только мне не нужны вложенные циклы, поэтому я объявил переменные типа "itemchar:" итерируемые (кончаются на :). А в функцию рендеринга темплейта идут параметры itemchar1, itemchar2. Дальше, сложность в том что одна итерация цикла должна выводить в темплейт не одну а набор переменных, зависящих от цикла. Т.е. мне надо построить контент таблицы к пример такого содержания:

itemchar{i} | itemdate{i} | itemstatus{i}

Поэтому это уже не переменная, а итерируемый кусок темплейта где вся строка данных подставляется разными значениями, в зависимости от переменной цикла. Я вот думаю его засунуть в отдельный темплейт файл и вызывать оттуда (?).

Действительно изящное решение я видел в Mojolicious (thanks to A.Sapozhnikov). Но там темплейт - сам по себе перл скрипт и вызывается из основного кода. Т.е. темплейт активный, а не пассивный.

Date: 2012-01-27 02:26 pm (UTC)
From: [identity profile] otstavnov.com (from livejournal.com)
> Поэтому это уже не переменная, а итерируемый кусок темплейта где вся строка данных подставляется разными значениями, в зависимости от переменной цикла.

Возможно, имеет смысл с именами не заморачиваться, а просто отсчитывать переменные.

> Я вот думаю его засунуть в отдельный темплейт файл и вызывать оттуда (?).

Или, наряду с переменными, ввести в HTML метаскобки.

Там, собственно, проблема в том, чтобы понять, где начинается и где кончается итерируемый фрагмент, если в начале и конце не переменные, а какие-то константные цепочки, да?

Date: 2012-01-27 04:16 pm (UTC)
From: [identity profile] otstavnov.com (from livejournal.com)
P.S. Что-то мне подсказывает, что Лердорф 20 лет назад тоже задался этим вопросом... :)

Date: 2012-01-28 07:55 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
А ты ведь видел мой сегодняшний пост с примером из Скалы?

Date: 2012-01-28 05:23 pm (UTC)
From: [identity profile] anspa.livejournal.com
ага. я примерно так же на перле пишу.

Profile

anspa: (Default)
anspa

December 2016

S M T W T F S
    123
45678910
11121314151617
18192021 222324
25 262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 23rd, 2025 03:11 am
Powered by Dreamwidth Studios