summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-12-10 21:50:31 -0500
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-12-10 21:50:31 -0500
commita5179fb7ed427c7dc74290d9295ff1b292fd7f3e (patch)
treea3a36b630a7a0d622b0124bf8ebf0ba9eb9b4806
parentf9b5b5172a6f111a6ecd853e5dc4fc0e2b0dba6b (diff)
downloadaskbot-a5179fb7ed427c7dc74290d9295ff1b292fd7f3e.tar.gz
askbot-a5179fb7ed427c7dc74290d9295ff1b292fd7f3e.tar.bz2
askbot-a5179fb7ed427c7dc74290d9295ff1b292fd7f3e.zip
autolink urls
-rw-r--r--askbot/utils/markup.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/askbot/utils/markup.py b/askbot/utils/markup.py
index 86c4c3b8..8347811a 100644
--- a/askbot/utils/markup.py
+++ b/askbot/utils/markup.py
@@ -1,13 +1,26 @@
+import re
from askbot import const
from askbot.conf import settings as askbot_settings
from markdown2 import Markdown
+#url taken from http://regexlib.com/REDetails.aspx?regexp_id=501 by Brian Bothwell
+URL_RE = re.compile("(?<!href=['\"])((http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&amp;%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&amp;%\$#\=~_\-]+))*)")
+
+LINK_PATTERNS = [
+ (URL_RE, r'\1'),
+]
+
def get_parser():
+ extras = ['link-patterns',]
if askbot_settings.ENABLE_MATHJAX or \
askbot_settings.MARKUP_CODE_FRIENDLY:
- return Markdown(html4tags=True, extras=['code-friendly',])
- else:
- return Markdown(html4tags=True)
+ extras.append('code-friendly')
+
+ return Markdown(
+ html4tags=True,
+ extras=extras,
+ link_patterns = LINK_PATTERNS
+ )
def format_mention_in_html(mentioned_user):