File tree Expand file tree Collapse file tree 2 files changed +45
-5
lines changed
Expand file tree Collapse file tree 2 files changed +45
-5
lines changed Original file line number Diff line number Diff line change @@ -662,20 +662,36 @@ def add_url_rule(
662662
663663 @setupmethod
664664 def template_filter (
665- self , name : str | None = None
666- ) -> t .Callable [[T_template_filter ], T_template_filter ]:
665+ self , name : t . Callable [..., t . Any ] | str | None = None
666+ ) -> t .Callable [[T_template_filter ], T_template_filter ] | T_template_filter :
667667 """A decorator that is used to register custom template filter.
668668 You can specify a name for the filter, otherwise the function
669669 name will be used. Example::
670670
671- @app.template_filter()
672- def reverse(s):
673- return s[::-1]
671+ @app.template_filter()
672+ def reverse(s):
673+ return s[::-1]
674+
675+ The decorator also can be used without parentheses::
676+
677+ @app.template_filter
678+ def reverse(s):
679+ return s[::-1]
674680
675681 :param name: the optional name of the filter, otherwise the
676682 function name will be used.
677683 """
678684
685+ if callable (name ):
686+ # If name is callable, it is the function to register.
687+ # This is a shortcut for the common case of
688+ # @app.template_filter
689+ # def func():
690+
691+ func = name
692+ self .add_template_filter (func )
693+ return func
694+
679695 def decorator (f : T_template_filter ) -> T_template_filter :
680696 self .add_template_filter (f , name = name )
681697 return f
Original file line number Diff line number Diff line change @@ -129,6 +129,30 @@ def my_reverse(s):
129129 assert app .jinja_env .filters ["my_reverse" ] == my_reverse
130130 assert app .jinja_env .filters ["my_reverse" ]("abcd" ) == "dcba"
131131
132+ @app .template_filter
133+ def my_reverse_2 (s ):
134+ return s [::- 1 ]
135+
136+ assert "my_reverse_2" in app .jinja_env .filters .keys ()
137+ assert app .jinja_env .filters ["my_reverse_2" ] == my_reverse_2
138+ assert app .jinja_env .filters ["my_reverse_2" ]("abcd" ) == "dcba"
139+
140+ @app .template_filter ("my_reverse_custom_name" )
141+ def my_reverse_3 (s ):
142+ return s [::- 1 ]
143+
144+ assert "my_reverse_custom_name" in app .jinja_env .filters .keys ()
145+ assert app .jinja_env .filters ["my_reverse_custom_name" ] == my_reverse_3
146+ assert app .jinja_env .filters ["my_reverse_custom_name" ]("abcd" ) == "dcba"
147+
148+ @app .template_filter (name = "my_reverse_custom_name_2" )
149+ def my_reverse_4 (s ):
150+ return s [::- 1 ]
151+
152+ assert "my_reverse_custom_name_2" in app .jinja_env .filters .keys ()
153+ assert app .jinja_env .filters ["my_reverse_custom_name_2" ] == my_reverse_4
154+ assert app .jinja_env .filters ["my_reverse_custom_name_2" ]("abcd" ) == "dcba"
155+
132156
133157def test_add_template_filter (app ):
134158 def my_reverse (s ):
You can’t perform that action at this time.
0 commit comments