summaryrefslogtreecommitdiffstats
path: root/filter_manager.py
diff options
context:
space:
mode:
authorJan Pokorný <jpokorny@redhat.com>2014-02-09 23:01:54 +0100
committerJan Pokorný <jpokorny@redhat.com>2014-02-09 23:01:54 +0100
commite42a83c6be9368cf45f6372898bf338d0b056a2a (patch)
tree9af9416fd677230f8f01527b359c3cb624d0c31a /filter_manager.py
parent84a1924d110702bee1e5dc2320c421a20fa71c85 (diff)
downloadclufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.tar.gz
clufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.tar.xz
clufter-e42a83c6be9368cf45f6372898bf338d0b056a2a.zip
filter_manager: make filter manager work with "in_obj" directly
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'filter_manager.py')
-rw-r--r--filter_manager.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/filter_manager.py b/filter_manager.py
index 04297d7..8263e7e 100644
--- a/filter_manager.py
+++ b/filter_manager.py
@@ -7,6 +7,7 @@ __author__ = "Jan Pokorný <jpokorny @at@ Red Hat .dot. com>"
import logging
+from .error import ClufterError
from .filter import filters
from .format import CompositeFormat, Format
from .plugin_registry import PluginManager
@@ -17,6 +18,10 @@ from .utils import apply_preserving_depth, \
log = logging.getLogger(__name__)
+class FilterManagerError(ClufterError):
+ pass
+
+
class FilterManager(PluginManager):
"""Class responsible to manage filters and filtering itself"""
_default_registry = filters
@@ -67,5 +72,13 @@ class FilterManager(PluginManager):
def __call__(self, which, in_decl, **kwargs):
flt = self._filters[which]
- in_obj = flt.in_format(*in_decl)
+ if isinstance(in_decl, Format):
+ if not issubclass(in_decl, flt.in_format):
+ raise FilterManagerError(self, "input object: format mismatch"
+ " (expected `{0}', got `{1}')",
+ in_decl.__class__.name,
+ flt.in_format.name)
+ in_obj = in_decl
+ else:
+ in_obj = flt.in_format(*in_decl)
return flt(in_obj, **kwargs)