annotate core/markup.py @ 887:9a15f7c27526

Actually save model object upon change. This commit was tested on the comments model. Additional logging added. Added check for Markdown image references. Added TODOs after observing behavior on comments.
author Brian Neal <bgneal@gmail.com>
date Tue, 03 Feb 2015 21:09:44 -0600
parents ff645a692791
children 98d2388b6bb2
rev   line source
bgneal@124 1 """
bgneal@128 2 Markup related utitlities useful for the entire project.
bgneal@848 3
bgneal@124 4 """
bgneal@124 5 import markdown as _markdown
bgneal@124 6 from django.utils.encoding import force_unicode
bgneal@124 7
bgneal@211 8 from smiley import SmilifyMarkdown
bgneal@848 9 from core.mdexts.urlize import UrlizeExtension
bgneal@848 10 from core.mdexts.deleted import DelExtension
bgneal@849 11 from core.html import clean_html
bgneal@849 12
bgneal@124 13
bgneal@124 14 class Markdown(object):
bgneal@128 15 """
bgneal@792 16 This is a thin wrapper around the Markdown class.
bgneal@792 17
bgneal@128 18 """
bgneal@849 19 def __init__(self):
bgneal@849 20 self.md = _markdown.Markdown(extensions=[
bgneal@848 21 UrlizeExtension(),
bgneal@848 22 'markdown.extensions.nl2br',
bgneal@848 23 DelExtension(),
bgneal@848 24 ])
bgneal@124 25
bgneal@124 26 def convert(self, s):
bgneal@849 27 return clean_html(self.md.convert(force_unicode(s)))
bgneal@124 28
bgneal@124 29
bgneal@124 30 def markdown(s):
bgneal@128 31 """
bgneal@128 32 A convenience function for one-off markdown jobs.
bgneal@128 33 """
bgneal@124 34 md = Markdown()
bgneal@124 35 return md.convert(s)
bgneal@128 36
bgneal@128 37
bgneal@128 38 class SiteMarkup(object):
bgneal@128 39 """
bgneal@128 40 This class provides site markup by combining markdown and
bgneal@128 41 our own smiley markup.
bgneal@792 42
bgneal@792 43 The relative_urls parameter controls whether the smileys are generated with
bgneal@792 44 relative or absolute URLs.
bgneal@792 45
bgneal@128 46 """
bgneal@792 47 def __init__(self, relative_urls=True):
bgneal@128 48 self.md = Markdown()
bgneal@792 49 self.smiley = SmilifyMarkdown(relative_urls=relative_urls)
bgneal@128 50
bgneal@128 51 def convert(self, s):
bgneal@211 52 return self.md.convert(self.smiley.convert(s))
bgneal@128 53
bgneal@128 54
bgneal@792 55 def site_markup(s, relative_urls=True):
bgneal@128 56 """
bgneal@128 57 Convenience function for one-off site markup jobs.
bgneal@128 58 """
bgneal@792 59 sm = SiteMarkup(relative_urls=relative_urls)
bgneal@128 60 return sm.convert(s)