diff options
Diffstat (limited to 'lib/jinja2/_markupsafe/_native.py')
| -rw-r--r-- | lib/jinja2/_markupsafe/_native.py | 45 | 
1 files changed, 45 insertions, 0 deletions
| diff --git a/lib/jinja2/_markupsafe/_native.py b/lib/jinja2/_markupsafe/_native.py new file mode 100644 index 000000000..7b95828ec --- /dev/null +++ b/lib/jinja2/_markupsafe/_native.py @@ -0,0 +1,45 @@ +# -*- 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 jinja2._markupsafe import Markup + + +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(unicode(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, unicode): +        s = unicode(s) +    return s | 
