viewutils.py (969B) - raw
1 import re, urllib 2 from markdown2 import Markdown 3 import genshi 4 5 def markdown(s, safe_mode=None): 6 m = Markdown(extras=['code_friendly'], safe_mode=safe_mode).convert(s) 7 return genshi.Markup(m) 8 9 def mini_markdown(s, safe_mode=None): 10 # XXX find a more efficient way to do this? 11 m = Markdown(extras=['code_friendly']).convert(s) 12 match = re.match(u'<p>(.*)</p>', m) 13 assert match, m 14 return genshi.Markup(match.group(1)) 15 16 IDIFY_WHITESPACE_PATT = re.compile(r'(?u)\s+') 17 IDIFY_ACCEPT_PATT = re.compile(r'(?u)\w|[-_]') 18 def idify(s): 19 # http://www.w3.org/TR/REC-xml/#NT-Name 20 s = s.lower() 21 s = IDIFY_WHITESPACE_PATT.sub(u'-', s) 22 return u''.join(c for c in s if IDIFY_ACCEPT_PATT.match(c)) 23 24 ATOM_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S+10:00' 25 26 def tag_list(tags): 27 return genshi.Markup(u', ').join([ 28 genshi.Markup(u'<a rel="tag" href="/tags/%s">%s</a>' % (urllib.quote(tag.encode('utf8'), ''), tag)) 29 for tag in tags])