You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
10 years ago
|
# -*- coding: utf-8 -*-
|
||
|
"""
|
||
|
markupsafe._native
|
||
|
~~~~~~~~~~~~~~~~~~
|
||
|
|
||
|
Native Python implementation the C module is not compiled.
|
||
|
|
||
|
:copyright: (c) 2010 by Armin Ronacher.
|
||
|
:license: BSD, see LICENSE for more details.
|
||
|
"""
|
||
|
from markupsafe import Markup
|
||
|
from markupsafe._compat import text_type
|
||
|
|
||
|
|
||
|
def escape(s):
|
||
|
"""Convert the characters &, <, >, ' and " in string s to HTML-safe
|
||
|
sequences. Use this if you need to display text that might contain
|
||
|
such characters in HTML. Marks return value as markup string.
|
||
|
"""
|
||
|
if hasattr(s, '__html__'):
|
||
|
return s.__html__()
|
||
|
return Markup(text_type(s)
|
||
|
.replace('&', '&')
|
||
|
.replace('>', '>')
|
||
|
.replace('<', '<')
|
||
|
.replace("'", ''')
|
||
|
.replace('"', '"')
|
||
|
)
|
||
|
|
||
|
|
||
|
def escape_silent(s):
|
||
|
"""Like :func:`escape` but converts `None` into an empty
|
||
|
markup string.
|
||
|
"""
|
||
|
if s is None:
|
||
|
return Markup()
|
||
|
return escape(s)
|
||
|
|
||
|
|
||
|
def soft_unicode(s):
|
||
|
"""Make a string unicode if it isn't already. That way a markup
|
||
|
string is not converted back to unicode.
|
||
|
"""
|
||
|
if not isinstance(s, text_type):
|
||
|
s = text_type(s)
|
||
|
return s
|