| Новости | 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), но идея, я думаю, ясна. Кто-нибудь со мной согласен? :)