Armin Ronacher | 07bc684 | 2008-03-31 14:18:49 +0200 | [diff] [blame] | 1 | # -*- coding: utf-8 -*- |
| 2 | """ |
| 3 | jinja2.utils |
| 4 | ~~~~~~~~~~~~ |
| 5 | |
| 6 | Utility functions. |
| 7 | |
| 8 | :copyright: 2008 by Armin Ronacher. |
| 9 | :license: BSD, see LICENSE for more details. |
| 10 | """ |
Armin Ronacher | 8edbe49 | 2008-04-10 20:43:43 +0200 | [diff] [blame] | 11 | |
| 12 | |
| 13 | def escape(obj, attribute=False): |
| 14 | """HTML escape an object.""" |
| 15 | if hasattr(obj, '__html__'): |
| 16 | return obj.__html__() |
Armin Ronacher | 449167d | 2008-04-11 17:55:05 +0200 | [diff] [blame] | 17 | return unicode(obj) \ |
Armin Ronacher | 8edbe49 | 2008-04-10 20:43:43 +0200 | [diff] [blame] | 18 | .replace('&', '&') \ |
| 19 | .replace('>', '>') \ |
Armin Ronacher | 449167d | 2008-04-11 17:55:05 +0200 | [diff] [blame] | 20 | .replace('<', '<') \ |
| 21 | .replace('"', '"') |
Christoph Hack | e9e43bb | 2008-04-13 23:35:48 +0200 | [diff] [blame^] | 22 | |
| 23 | |
| 24 | def pformat(obj, verbose=False): |
| 25 | """ |
| 26 | Prettyprint an object. Either use the `pretty` library or the |
| 27 | builtin `pprint`. |
| 28 | """ |
| 29 | try: |
| 30 | from pretty import pretty |
| 31 | return pretty(obj, verbose=verbose) |
| 32 | except ImportError: |
| 33 | from pprint import pformat |
| 34 | return pformat(obj) |