add a decorator to add custom template filter

This commit is contained in:
Sebastien Estienne 2010-04-25 03:44:11 +08:00 committed by Armin Ronacher
parent 58fa088abc
commit a9bb965b6d
2 changed files with 48 additions and 0 deletions

View file

@ -12,6 +12,7 @@
from __future__ import with_statement
import os
import sys
import types
from jinja2 import Environment, PackageLoader, FileSystemLoader
from werkzeug import Request as RequestBase, Response as ResponseBase, \
@ -639,6 +640,27 @@ class Flask(object):
return f
return decorator
def template_filter(self, arg=None):
"""A decorator that is used to register custom template filter.
You can specify a name for the filter, otherwise the function
name will be used. Example::
@app.template_filter
def reverse(s):
return s[::-1]
:param name: the optional name of the filter, otherwise the
function name will be used.
"""
if type(arg) is types.FunctionType:
self.jinja_env.filters[arg.__name__] = arg
return arg
def decorator(f):
self.jinja_env.filters[arg or f.__name__] = f
return f
return decorator
def before_request(self, f):
"""Registers a function to run before each request."""
self.before_request_funcs.append(f)