import re
import random


email_link_pat = re.compile(r'<a\s+href=("|\')?mailto:[^>]+>[^<]*</a>')
email_pat = re.compile(r'\b[-.\w]+@[-.\w]+\.[a-z]{2,4}\b')


def get_script(m):
    code_list = []
    for c in m.group(0):
        d = ord(c)
        x = random.randint(0, d)
        code_list.append("%d+%d" % (x, d-x))

    return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % \
        ",".join(code_list)


class ObfuscateEmailAddressMiddleware(object):
    def process_response(self, request, response):
        if('text/html' in response['Content-Type']):
            response.content = email_link_pat.sub(get_script, response.content)
            response.content = email_pat.sub(get_script, response.content)
        return response
