allow history to work in webkit browsers
[gae-samples.git] / python27 / guestbook / jinja2 / _markupsafe / _native.py
blob7b95828ec87f7e7e2c8af4e5ce343eedbe3fa038
1 # -*- coding: utf-8 -*-
2 """
3 markupsafe._native
4 ~~~~~~~~~~~~~~~~~~
6 Native Python implementation the C module is not compiled.
8 :copyright: (c) 2010 by Armin Ronacher.
9 :license: BSD, see LICENSE for more details.
10 """
11 from jinja2._markupsafe import Markup
14 def 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(unicode(s)
22 .replace('&', '&amp;')
23 .replace('>', '&gt;')
24 .replace('<', '&lt;')
25 .replace("'", '&#39;')
26 .replace('"', '&#34;')
30 def 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)
39 def 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, unicode):
44 s = unicode(s)
45 return s