Mercurial > public > sg101
diff gpp/smiley/__init__.py @ 124:9c18250972d5
Refactored the markdown/smiley logic. Created classes for Markdown and Smilify. No longer call render_to_string() in models.py for various models.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Sat, 14 Nov 2009 04:32:32 +0000 |
parents | dbd703f7d63a |
children | 48621ba5c385 |
line wrap: on
line diff
--- a/gpp/smiley/__init__.py Sun Nov 08 21:15:31 2009 +0000 +++ b/gpp/smiley/__init__.py Sat Nov 14 04:32:32 2009 +0000 @@ -0,0 +1,41 @@ +""" +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 HTML img tags of smilies. + """ + def __init__(self): + self.map = Smiley.objects.get_smiley_map() + + def convert(self, value, autoescape=False): + 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) + + +def smilify(value, autoescape=False): + """ + A convenience function to "smilify" text by replacing text with HTML + img tags of smilies. + """ + s = Smilify() + return s.convert(value, autoescape) +