Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Никита Козин 14.08.2004 13:21
Начну с примера:<table border="1"> ^table1.menu{ <tr> <td>$table1.field1</td> <td>$table1.field2</td> <td>$table1.field3</td> </tr> } </table>Если название таблицы длинное и/или составное (например, таблица находиться внутри хэша) тогда для использования значений текущего поля таблицы приходиться каждый раз писать это название. Предлагаю разрешить сокращенную запись имен полей, например так:
<table border="1"> ^table1.menu{ <tr> <td>$.field1</td> <td>$.field2</td> <td>$.field3</td> </tr> } </table>Приведу пример по применению. Правда названия там не длинные, т.к. и сам пример не сложный:
# Создаем таблицы... $forum[^table::create{id uri title 1 parser/ Parser 2 php/ PHP 3 mysql/ MySQL }] $topic[^table::create{forum_id uri title 1 trees/ Посторение деревьев 1 regexp/ Регулярные выражения 1 tables/ Работа с таблицами 2 parser/ Вопросы спецления с Parser-ом 3 select/ Выборка записей 3 insert/ Добавление записей}] # ...и выводим их: <table border="1"> <tr> <th>Форум</th> <th>Темы</th> </tr> # Сейчас приходиться много раз писать одно и тоже (в данном случае «$forum.» и «$topic.») # Пока названия короткие — без проблем, но когда названия становятся длиннее... ^forum.menu{ <tr> <td><a href="/forum/$forum.uri">$forum.title</a></td> <td> <ul> ^topic.menu{ ^if($topic.forum_id eq $forum.id){ <li><a href="/forum/${forum.uri}$topic.uri">$topic.title</a></li> } } </ul> </td> </tr> } </table>Вот как предлагаю сделать я:
^forum.menu{ <tr> <td><a href="/forum/$.uri">$.title</a></td> <td> <ul> ^topic.menu{ ^if($.forum_id eq $..id){ <li><a href="/forum/${..uri}$.uri">$.title</a></li> } } </ul> </td> </tr> } </table>Или даже не только в menu использовать подобные сокращения, а например еще и в select:
# Сейчас есть: $thoseAbove20[^men.select($men.age>20)] # Я предлагаю: $thoseAbove20[^men.select($.age>20)]Подобная реализация используется в XSLT:
<xsl:template match="link"> <a href="{@href}"><xsl:value-of select="." /></a> </xsl:template>Может быть я несколько не удачно предложил сокращать запись ($..field), но идея, я думаю, ясна. Кто-нибудь со мной согласен? :)