1645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez# -*- coding: utf-8 -*- 2645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez""" 3645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez markupsafe._native 4645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez ~~~~~~~~~~~~~~~~~~ 5645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 6645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez Native Python implementation the C module is not compiled. 7645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 8645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez :copyright: (c) 2010 by Armin Ronacher. 9645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez :license: BSD, see LICENSE for more details. 10645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez""" 11645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom markupsafe import Markup 12645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezfrom markupsafe._compat import text_type 13645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 14645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 15645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef escape(s): 16645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """Convert the characters &, <, >, ' and " in string s to HTML-safe 17645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez sequences. Use this if you need to display text that might contain 18645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez such characters in HTML. Marks return value as markup string. 19645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """ 20645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if hasattr(s, '__html__'): 21645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return s.__html__() 22645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return Markup(text_type(s) 23645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .replace('&', '&') 24645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .replace('>', '>') 25645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .replace('<', '<') 26645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .replace("'", ''') 27645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez .replace('"', '"') 28645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez ) 29645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 30645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 31645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef escape_silent(s): 32645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """Like :func:`escape` but converts `None` into an empty 33645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez markup string. 34645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """ 35645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if s is None: 36645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return Markup() 37645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return escape(s) 38645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 39645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez 40645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavezdef soft_unicode(s): 41645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """Make a string unicode if it isn't already. That way a markup 42645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez string is not converted back to unicode. 43645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez """ 44645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez if not isinstance(s, text_type): 45645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez s = text_type(s) 46645501c2ab19a559ce82a1d5a29ced159a4c30fbLuis Hector Chavez return s 47