You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
# -*- 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 ._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
|