import re import os import hashlib def escape_repl(m): print "group 0" print m.group(0) print "group 1" print m.group(1) if m.group(1): return "```" + escape_html(m.group(1)) + "```" def unescape_repl(m): if m.group(1): return "```" + unescape_html(m.group(1)) + "```" def escape_html(s): s = s.replace("&", '&') s = s.replace("<", '<') s = s.replace(">", '>') s = s.replace('"', '"') s = s.replace("'", ''') return s def unescape_html(s): s = s.replace('&', "&") s = s.replace('<', "<") s = s.replace('>', ">") s = s.replace('"', '"') s = s.replace(''', "'") return s def mkdir_safe(path): if path and not(os.path.exists(path)): os.makedirs(path) return path def extract_path(file_path): if not file_path: return None last_slash = file_path.rindex("/") if last_slash: return file_path[0, last_slash] def clean_path(path): if path: if path[0] != '/': path.insert(0, '/') return re.sub(r"//+", '/', path) def extract_name(file_path): if file_path[-1] == "/": return None return os.path.basename(file_path) def remove_ext(path): return os.path.splitext(path)[0] def clean_url(url): if not url: return url url = url.replace('%2F', '/') url = re.sub(r"^/+", "", url) return re.sub(r"//+", '/', url) def to_canonical(s): """ Double space -> single dash Double dash -> single dash Remove all non alphanumeric and dash Limit to first 64 chars """ s = s.encode('ascii', 'ignore') s = str(s) s = re.sub(r"\s\s*", "-", s) s = re.sub(r"\-\-+", "-", s) s = re.sub(r"[^a-zA-Z0-9\-]", "", s) s = s[:64] return s def gravatar_url(email): return "https://www.gravatar.com/avatar/" + hashlib.md5(email).hexdigest()