Remove \r's.
[matthijs/projects/xerxes.git] / tools / templatetags / encode_email.py
1 import random
2 from django import template
3 """
4     Randomized string encoding
5     Inspired by John Gruber's Markdown: 
6     http://daringfireball.net/projects/markdown/syntax#autolink
7 """
8 register = template.Library()
9
10 #@template.stringfilter
11 def encode_string(value):
12     """
13     Encode a string into it's equivalent html entity.
14
15     The tag will randomly choose to represent the character as a hex digit or
16     decimal digit.
17    
18     Use {{ obj.name|encode_string }}
19     
20     {{ "person"|encode_string }} Becomes something like:
21     person
22     """
23     e_string = "" 
24     for a in value:
25         type = random.randint(0,1)
26         if type:
27             en = "&#x%x;" % ord(a)
28         else:
29             en = "&#%d;" % ord(a)
30         e_string += en 
31     return e_string
32
33 register.filter("encode_string", encode_string)
34
35 def encode_mailto(value, arg):
36     """
37     Encode an e-mail address and its corresponding link name to its equivalent
38     html entities.
39
40     Use {{ obj.email|encode_mailto:obj.name }}
41     
42     {{ "j@j.com"|encode_mailto:"j" }} Becomes something like:
43     <a href="&#x6d;&#x61;&#x69;&#x6c;&#x74;&#111;&#x3a;&#106;&#x40;&#106;\
44     &#46;&#99;&#x6f;&#x6d;">&#x6a;</a>
45     """
46     address = 'mailto:%s' % value
47     address = encode_string(address)
48     name = encode_string(arg)
49     tag = "<a href=\"%s\">%s</a>" % (address, name)
50     return tag
51
52 register.filter("encode_mailto", encode_mailto)