Mercurial > public > sg101
view gpp/smiley/__init__.py @ 492:3c48a555298d
Added a custom tag to display a link to a profile. Refactored the avatar tag to optionally display a profile link around the image. Removed the width and height attributes from the avatar image tag. I think this was causing disk hits whenever those properties were not cached. The avatar tag is now an inclusion tag.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 22 Oct 2011 00:07:50 +0000 |
parents | 72fd300685d5 |
children |
line wrap: on
line source
""" Smiley classes and functions. """ import re from django.utils.safestring import SafeData from django.utils.html import conditional_escape from smiley.models import Smiley class SmilifyHtml(object): """ A class to "smilify" text by replacing text with HTML img tags for smiley images. """ def __init__(self): self.map = Smiley.objects.get_smiley_map() def convert(self, value, autoescape=False): """ Converts and returns the supplied text with the HTML version of the smileys. """ if not value: return u'' 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] else: words[i] = esc(words[i]) return u' '.join(words) class SmilifyMarkdown(object): """ A class to "smilify" text by replacing text with Markdown image syntax for smiley images. """ def __init__(self): self.regexes = Smiley.objects.get_smiley_regexes() def convert(self, s): """ Returns a string copy of the input s that has the smiley codes replaced with Markdown for smiley images. """ if not s: return u'' for regex, repl in self.regexes: s = regex.sub(repl, s) return s def smilify_html(value, autoescape=False): """ A convenience function to "smilify" text by replacing text with HTML img tags of smilies. """ s = SmilifyHtml() return s.convert(value, autoescape=autoescape)