annotate gpp/core/markup.py @ 429:d0f0800eef0c

Making the jquery tabbed version of the messages app the current version and removing the old. Also figured out how to dynamically update the base template's count of unread messages when messages are read.
author Brian Neal <bgneal@gmail.com>
date Tue, 03 May 2011 02:56:58 +0000
parents f54bf3b3bece
children
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@128 11 This is a thin wrapper around the Markdown class which deals with the
bgneal@128 12 differences in Markdown versions on the production and development server.
bgneal@352 13 This code was inspired by the code in
bgneal@128 14 django/contrib/markup/templatetags/markup.py.
bgneal@128 15 Currently, we only have to worry about Markdown 1.6b and 2.0.
bgneal@128 16 """
bgneal@124 17 def __init__(self, safe_mode='escape'):
bgneal@124 18 # Unicode support only in markdown v1.7 or above. Version_info
bgneal@124 19 # exists only in markdown v1.6.2rc-2 or above.
bgneal@124 20 self.unicode_support = getattr(_markdown, "version_info", None) >= (1, 7)
bgneal@353 21 self.md = _markdown.Markdown(safe_mode=safe_mode,
bgneal@356 22 extensions=['urlize', 'nl2br', 'del'])
bgneal@124 23
bgneal@124 24 def convert(self, s):
bgneal@124 25 if self.unicode_support:
bgneal@124 26 return self.md.convert(force_unicode(s))
bgneal@124 27 else:
bgneal@124 28 return force_unicode(self.md.convert(s))
bgneal@124 29
bgneal@124 30
bgneal@124 31 def markdown(s):
bgneal@128 32 """
bgneal@128 33 A convenience function for one-off markdown jobs.
bgneal@128 34 """
bgneal@124 35 md = Markdown()
bgneal@124 36 return md.convert(s)
bgneal@128 37
bgneal@128 38
bgneal@128 39 class SiteMarkup(object):
bgneal@128 40 """
bgneal@128 41 This class provides site markup by combining markdown and
bgneal@128 42 our own smiley markup.
bgneal@128 43 """
bgneal@128 44 def __init__(self):
bgneal@128 45 self.md = Markdown()
bgneal@211 46 self.smiley = SmilifyMarkdown()
bgneal@128 47
bgneal@128 48 def convert(self, s):
bgneal@211 49 return self.md.convert(self.smiley.convert(s))
bgneal@128 50
bgneal@128 51
bgneal@128 52 def site_markup(s):
bgneal@128 53 """
bgneal@128 54 Convenience function for one-off site markup jobs.
bgneal@128 55 """
bgneal@128 56 sm = SiteMarkup()
bgneal@128 57 return sm.convert(s)