ng.zcmljunction
2007-11-10 16:06Продукт ng.zcmljunction предназначен для того, что бы можно было быстро (на уровне одной директивы ZCML) сделать адаптер одного интерфейса к другому, в основном за счет переименования и объединения атрибутов.
Такой продукт крайне полезен при построении адаптеров к поисковым каталогам и другим аналогичным службам, так как адаптеры приходится строить к десяткам объектов, а код их относительно простой.
Продукт
| Название: | |
| ng.zcmljunction | |
| Выложен на PyPI | |
| Репозиторий |
Описание ng.zcmljunction
Продукт ng.zcmljunction объявляет две вложенные директивы, которые позволяют механически сконструировать адаптер к интерфейсу, суть которого сводится к переименованию переменных, их объединению и подстановке значений по умолчанию.
Описание
Регистрируются две директивы: junction и вложенная в нее директива property.
- junction
Объявляет собственно адаптер, т.е. указывает между какими именно интерфейсами будет происходить преобразование.
Возможные параметры:
- for
- Имя адаптируемого интерфейса;
- provides
- Имя предоставляемого интерфейса;
- factory
- Необязательный параметр, который содержит класс, который может реализовывать преобразование атрибутов, которое не сводится к вышеописанным преобразованиям.
- property
Директива вложена в директиву junction и для каждого свойства описывает, как оно может быть получено.
Возможные параметры:
- out
- Имя атрибута предоставляемого интерфейса;
- in
- Список атрибутов адаптируемого интерфейса, из которых собирается атрибут предоставляемого интерфейса. Обратите внимание, что в адаптере возможна рекурсия - т.е. он может использовать в качестве входных атрибуты, собранные ранее. Текстовые атрибуты, если их много, складываются через символ n, не-текстовый атрибут может быть только один и он копируется;
- default
- Значение, которое будет подставлено, если отсутствует указанный атрибут адаптируемого интерфейса или атрибут не указан вообще.
Пример
Для примера возьмем типичный адаптер, преобразующий интерфейс объекта к интерфейсу поискового каталога:
<junction for=".interfaces.IArticle" provides=".interfaces.ISearch" factory = ".searchadapter.SearchAdapter" > <property in="title" out="title"/> <property in="abstract" out="abstract"/> <property in="body" out="body" default=""/> <property in="abstract klass name keyword title body author" out="common" default=""/> </junction>


