Source code for lighty.templates.filter

"""Package provides template filters management
"""
import string
from .context import resolve


[docs]class FilterManager(object): """Class used for filters manipulations """ __slots__ = ('apply', 'filters', 'is_filter_exists', ) def __init__(self): """Create new tag managet instance """ super(FilterManager, self).__init__() self.filters = {}
[docs] def is_filter_exists(self, name): """Check is filter exists """ if name not in self.filters: raise Exception("Filter '%s' is not registered" % name) return self.filters[name]
[docs] def register(self, filter): '''Register filter in manager ''' self.filters[filter.__name__] = filter
[docs] def apply(self, filter, value, args, arg_types, context): '''Apply filter to values ''' filter_func = self.is_filter_exists(filter) new_args = [] i = 0 while i < len(args): new_args.append(arg_types[i] and args[i] or context[args[i]]) i += 1 return filter_func(value, *new_args)
filter_manager = FilterManager()