1import six 2# coding=utf-8 3 4 5class Processor(object): 6 """ 7 Processor base class 8 """ 9 name = None 10 parent = None 11 supported = None 12 enabled = True 13 14 def __init__(self, name=None, parent=None, supported=None): 15 self.name = name 16 self.parent = parent 17 self.supported = supported if supported else lambda parent: True 18 19 @property 20 def info(self): 21 return self.name 22 23 def process(self, content, debug=False, **kwargs): 24 return content 25 26 def __repr__(self): 27 return "Processor <%s %s>" % (self.__class__.__name__, self.info) 28 29 def __str__(self): 30 return repr(self) 31 32 def __unicode__(self): 33 return six.text_type(repr(self)) 34 35 36class FuncProcessor(Processor): 37 func = None 38 39 def __init__(self, func, name=None, parent=None, supported=None): 40 super(FuncProcessor, self).__init__(name=name, supported=supported) 41 self.func = func 42 43 def process(self, content, debug=False, **kwargs): 44 return self.func(content) 45