diff --git a/config/base.py b/config/base.py
index 69d06a1..69f5b2a 100644
--- a/config/base.py
+++ b/config/base.py
@@ -1,5 +1,5 @@
#
-# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
+# Copyright (c) 2016 Helmut Merz helmutm@cy55.de
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -18,8 +18,6 @@
"""
Adapters and others classes for analyzing resources.
-
-$Id$
"""
import os
@@ -33,6 +31,7 @@ from cybertools.meta.config import GlobalOptions as BaseGlobalOptions
from cybertools.meta.interfaces import IOptions
from cybertools.meta.namespace import Executor, ExecutionError
from cybertools.typology.interfaces import IType
+from loops.common import AdapterBase
from loops.interfaces import ILoops, ILoopsObject, ITypeConcept, IPredicate
#from loops.query import IQueryConcept
from loops.expert.concept import IQueryConcept
@@ -73,8 +72,8 @@ class LoopsOptions(Options):
def parseContextOptions(self):
def result():
- options = getattr(self.context, 'options', [])
- for opt in options:
+ options = getattr(self.context, 'options', None) or []
+ for opt in options:
parts = opt.split(':', 1)
key = parts[0].strip()
if len(parts) == 1:
@@ -128,6 +127,11 @@ class PredicateOptions(LoopsOptions):
adapts(IPredicate)
+class ConceptAdapterOptions(LoopsOptions):
+
+ adapts(AdapterBase)
+
+
class DummyOptions(Options):
def __getitem__(self, key):
diff --git a/config/configure.zcml b/config/configure.zcml
index 0218ca4..cec2980 100644
--- a/config/configure.zcml
+++ b/config/configure.zcml
@@ -27,6 +27,11 @@
+
+
+
+
+
diff --git a/table.py b/table.py
index ece56e0..2027af8 100644
--- a/table.py
+++ b/table.py
@@ -142,5 +142,8 @@ class DataTableSourceList(object):
for k, v in self.context.data.items()]
return iter(sorted(items, key=lambda x: x[1]))
+ def __contains__(self, value):
+ return value in self.context.data
+
def __len__(self):
return len(self.context.data)