Mercurial > public > sg101
view gpp/smiley/__init__.py @ 133:c515b7401078
Use the new common way to apply markItUp to textareas and to get the smiley and markdown help dialogs for all the remaining apps except for forums and comments.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Fri, 27 Nov 2009 00:21:47 +0000 |
parents | 48621ba5c385 |
children | 3a626c48e9ae |
line wrap: on
line source
""" Smiley class and function. """ import re from django.utils.safestring import SafeData from django.utils.html import conditional_escape from smiley.models import Smiley class Smilify(object): """ A class to "smilify" text by replacing text with either HTML img tags or markdown syntax for smiley images. """ HTML = 0 MARKDOWN = 1 def __init__(self): self.map = Smiley.objects.get_smiley_map() def _convert(self, value, rep_index, autoescape=False): """ Converts and returns the supplied text with either the HTML or markdown version of the smileys according to the output parameter. """ if not autoescape or isinstance(value, SafeData): esc = lambda x: x else: esc = conditional_escape words = value.split() for i, word in enumerate(words): if word in self.map: words[i] = self.map[word][rep_index] else: words[i] = esc(words[i]) return u' '.join(words) def html(self, value, autoescape=False): """ Converts the supplied text by replacing the smiley codes with HTML img tags. """ return self._convert(value, self.HTML, autoescape=autoescape) def markdown(self, value, autoescape=False): """ Converts the supplied text by replacing the smiley codes with markdown image syntax. """ return self._convert(value, self.MARKDOWN, autoescape=autoescape) def smilify_html(value, autoescape=False): """ A convenience function to "smilify" text by replacing text with HTML img tags of smilies. """ s = Smilify() return s.html(value, autoescape=autoescape) def smilify_markdown(value, autoescape=False): """ A convenience function to "smilify" text by replacing text with markdown syntax for the images of smilies. """ s = Smilify() return s.markdown(value, autoescape=autoescape)