Mercurial > public > sg101
annotate core/markup.py @ 818:cf486a8e8b43
Added the ability to export private messages to email.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 13 Sep 2014 16:19:46 -0500 |
parents | 7429c98c8ece |
children | 32ebe22f0cad |
rev | line source |
---|---|
bgneal@124 | 1 """ |
bgneal@128 | 2 Markup related utitlities useful for the entire project. |
bgneal@124 | 3 """ |
bgneal@124 | 4 import markdown as _markdown |
bgneal@124 | 5 from django.utils.encoding import force_unicode |
bgneal@124 | 6 |
bgneal@211 | 7 from smiley import SmilifyMarkdown |
bgneal@124 | 8 |
bgneal@124 | 9 class Markdown(object): |
bgneal@128 | 10 """ |
bgneal@792 | 11 This is a thin wrapper around the Markdown class. |
bgneal@792 | 12 |
bgneal@128 | 13 """ |
bgneal@124 | 14 def __init__(self, safe_mode='escape'): |
bgneal@353 | 15 self.md = _markdown.Markdown(safe_mode=safe_mode, |
bgneal@356 | 16 extensions=['urlize', 'nl2br', 'del']) |
bgneal@124 | 17 |
bgneal@124 | 18 def convert(self, s): |
bgneal@686 | 19 return self.md.convert(force_unicode(s)) |
bgneal@124 | 20 |
bgneal@124 | 21 |
bgneal@124 | 22 def markdown(s): |
bgneal@128 | 23 """ |
bgneal@128 | 24 A convenience function for one-off markdown jobs. |
bgneal@128 | 25 """ |
bgneal@124 | 26 md = Markdown() |
bgneal@124 | 27 return md.convert(s) |
bgneal@128 | 28 |
bgneal@128 | 29 |
bgneal@128 | 30 class SiteMarkup(object): |
bgneal@128 | 31 """ |
bgneal@128 | 32 This class provides site markup by combining markdown and |
bgneal@128 | 33 our own smiley markup. |
bgneal@792 | 34 |
bgneal@792 | 35 The relative_urls parameter controls whether the smileys are generated with |
bgneal@792 | 36 relative or absolute URLs. |
bgneal@792 | 37 |
bgneal@128 | 38 """ |
bgneal@792 | 39 def __init__(self, relative_urls=True): |
bgneal@128 | 40 self.md = Markdown() |
bgneal@792 | 41 self.smiley = SmilifyMarkdown(relative_urls=relative_urls) |
bgneal@128 | 42 |
bgneal@128 | 43 def convert(self, s): |
bgneal@211 | 44 return self.md.convert(self.smiley.convert(s)) |
bgneal@128 | 45 |
bgneal@128 | 46 |
bgneal@792 | 47 def site_markup(s, relative_urls=True): |
bgneal@128 | 48 """ |
bgneal@128 | 49 Convenience function for one-off site markup jobs. |
bgneal@128 | 50 """ |
bgneal@792 | 51 sm = SiteMarkup(relative_urls=relative_urls) |
bgneal@128 | 52 return sm.convert(s) |