def blog(value, autoescape=True):
"""[spam]ham[end]????????????HTML???????.
>>> blog('[filter html]<h1>Hello</h1>[end]')
'<h1>Hello</h1>'
>>> blog('[filter html]<h1>Hello</h1>[end]\
[filter url]https://torina.top[end]')
'<h1>Hello</h1><a target="_blank" rel="nofollow" \
href="https://torina.top" rel="nofollow">https://torina.top</a>'
"""
autoescape = autoescape and not isinstance(value, SafeData)
if autoescape:
value = escape(value)
filters = re.finditer(r'\[filter (?P<tag_name>.*?)\].*?\[end\]', value)
results = []
for f in filters:
filter_name = f.group('tag_name')
origin_text = f.group()
filter_function = globals().get(filter_name)
if filter_function and callable(filter_function):
result_text = filter_function(origin_text)
else:
result_text = origin_text
results.append((origin_text, result_text))
for origin_text, result_text in results:
if origin_text != result_text:
value = value.replace(origin_text, result_text)
return mark_safe(value)
评论列表
文章目录