11"""
22Set of "markup" template filters for Django.
3+
34These filters transform plain text
45markup syntaxes to HTML; currently there is support for:
56
1617
1718from django import template
1819from django .conf import settings
19- from django .utils .encoding import force_str
20+ from django .utils .encoding import force_str , smart_str
2021from django .utils .safestring import mark_safe
2122
2223register = template .Library ()
2324
2425
2526@register .filter (is_safe = True )
26- def textile (value ) :
27+ def textile (value : str ) -> str :
2728 """
28- :type value: str
29+ Runs textile over a given value.
30+
31+ Syntax::
2932
30- :rtype: str
33+ {{ value|textile }}
3134 """
32- import textile
35+ import textile # type: ignore[import-untyped]
3336
34- return mark_safe (force_str (
35- textile .textile (smart_str (value )))
36- )
37+ return mark_safe (force_str (textile .textile (smart_str (value ))))
3738
3839
3940@register .filter (is_safe = True )
40- def markdown (value , args = '' ) :
41+ def markdown (value : str , args : str = "" ) -> str :
4142 """
43+ Markdown Template tag.
44+
4245 Runs Markdown over a given value, optionally using various
4346 extensions python-markdown supports.
4447
@@ -52,68 +55,45 @@ def markdown(value, args=''):
5255
5356 If the version of Markdown in use does not support extensions,
5457 they will be silently ignored.
55-
56- :type value: str
57- :type args: str
58-
59- :rtype: str
6058 """
6159 import markdown
6260
63- extensions = [e for e in args .split (',' ) if e ]
61+ extensions = [e for e in args .split ("," ) if e ]
6462 if len (extensions ) > 0 and extensions [0 ] == "safe" :
6563 extensions = extensions [1 :]
66- safe_mode = True
67- else :
68- safe_mode = False
6964
70- return mark_safe (markdown .markdown (
71- force_str (value ),
72- extensions = extensions ,
73- safe_mode = safe_mode ,
74- enable_attributes = (not safe_mode )
75- ))
65+ return mark_safe (markdown .markdown (force_str (value ), extensions = extensions ))
7666
7767
7868@register .filter (is_safe = True )
79- def commonmark (value ) :
69+ def commonmark (value : str ) -> str :
8070 """
8171 Runs commonmark over a given value.
8272
8373 Syntax::
8474
8575 {{ value|commonmark }}
86-
87- :type value: str
88-
89- :rtype: str
9076 """
9177 import commonmark
9278
9379 parser = commonmark .Parser ()
9480 renderer = commonmark .HtmlRenderer ()
9581 ast = parser .parse (force_str (value ))
96- return mark_safe (
97- force_str (renderer .render (ast ))
98- )
82+ return mark_safe (force_str (renderer .render (ast )))
9983
10084
10185@register .filter (is_safe = True )
102- def restructuredtext (value ) :
86+ def restructuredtext (value : str ) -> str :
10387 """
104- :type value: str
105- :rtype: str
88+ Runs restructured text over a given value.
89+
90+ Syntax::
91+
92+ {{ value|restructuredtext }}
10693 """
94+ """"""
10795 from docutils .core import publish_parts
10896
109- docutils_settings = getattr (
110- settings ,
111- "RESTRUCTUREDTEXT_FILTER_SETTINGS" ,
112- {}
113- )
114- parts = publish_parts (
115- source = smart_str (value ),
116- writer_name = "html4css1" ,
117- settings_overrides = docutils_settings
118- )
97+ docutils_settings = getattr (settings , "RESTRUCTUREDTEXT_FILTER_SETTINGS" , {})
98+ parts = publish_parts (source = smart_str (value ), writer_name = "html4css1" , settings_overrides = docutils_settings )
11999 return mark_safe (force_str (parts ["fragment" ]))
0 commit comments