Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
dev 02.12.2005 13:29
Т.е. примерно вот так все должно выглядеть?@CLASS uri ################################################################### # Конструктор, items - таблица (поля: uri, id, title). @init[items] $children_of[^items.hash[parent_id][$.distinct[tables]]] ################################################################### # Необязательный параметр parent_uri - адрес корневой директории, по умолчанию "/". # Возвращает таблицу (поля: uri, id, title), содержащую полные адреса всех дочерних директорий. @get[parent_uri] ^if(!def $parent_uri){$parent_uri[/]} $_items[^table::create{uri id title}] ^_get[$children_of.0;$parent_uri] $result[$_items] $_items[] ################################################################### # внутренний метод, рекурсивно обходит дочерние директории, вычисляет их адреса # и добавляет их в таблицу _item. @_get[sibling;parent_uri] ^sibling.menu{ ^_items.append{${parent_uri}$sibling.[dir]/ $sibling.id $sibling.title} ^if(def $children_of.[$sibling.id]){ ^_get[$children_of.[$sibling.id];${parent_uri}$sibling.[dir]/] } }