1# -*- coding: utf-8 -*- 2""" 3 markupsafe._native 4 ~~~~~~~~~~~~~~~~~~ 5 6 Native Python implementation the C module is not compiled. 7 8 :copyright: (c) 2010 by Armin Ronacher. 9 :license: BSD, see LICENSE for more details. 10""" 11from ._compat import text_type 12 13 14def escape(s): 15 """Convert the characters &, <, >, ' and " in string s to HTML-safe 16 sequences. Use this if you need to display text that might contain 17 such characters in HTML. Marks return value as markup string. 18 """ 19 if hasattr(s, '__html__'): 20 return s.__html__() 21 return Markup(text_type(s) 22 .replace('&', '&') 23 .replace('>', '>') 24 .replace('<', '<') 25 .replace("'", ''') 26 .replace('"', '"') 27 ) 28 29 30def escape_silent(s): 31 """Like :func:`escape` but converts `None` into an empty 32 markup string. 33 """ 34 if s is None: 35 return Markup() 36 return escape(s) 37 38 39def soft_unicode(s): 40 """Make a string unicode if it isn't already. That way a markup 41 string is not converted back to unicode. 42 """ 43 if not isinstance(s, text_type): 44 s = text_type(s) 45 return s 46