12345678910111213141516171819202122232425262728293031 |
- #-*- coding: utf-8 -*-
- import re
- from urlparse import urlparse
- from django.conf import settings
- from misago.utils.strings import html_escape
- URL_RE = re.compile(r'^(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))$', re.UNICODE)
- def is_url(string):
- return URL_RE.search(string.strip()) != None
- def is_inner(string):
- return urlparse(string.strip()).netloc.lower() == urlparse(settings.BOARD_ADDRESS.lower()).netloc
- def clean_inner(string):
- parsed = urlparse(string.strip())
- href = parsed.path
- if parsed.query:
- href += '?%s' % parsed.query
- if parsed.fragment:
- href += '#%s' % parsed.fragment
- return html_escape(href)
- def clean_outer(string):
- parsed = urlparse(string.strip())
- if not parsed.scheme:
- return 'http://%s' % string
- return string
|