Skip to content

Commit

Permalink
Autolinker fixes
Browse files Browse the repository at this point in the history
Capture query string and document fragment in url regex
If inserting to attr-value, need to match url-link first, otherwise query string '=' gets picked up as punctuation.
Don't prepend mailto: if it's already there (e.g. inside an href)
  • Loading branch information
nauzilus committed Feb 23, 2014
1 parent d775fab commit 88696fa
Showing 1 changed file with 8 additions and 3 deletions.
11 changes: 8 additions & 3 deletions plugins/autolinker/prism-autolinker.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ if (!self.Prism) {
return;
}

var url = /\b([a-z]{3,7}:\/\/|tel:)[\w-+%~/.:]+/,
var url = /\b([a-z]{3,7}:\/\/|tel:)[\w-+%~/.:#=?&]+/,
email = /\b\S+@[\w.]+[a-z]{2}/,
linkMd = /\[([^\]]+)]\(([^)]+)\)/,

Expand All @@ -27,8 +27,13 @@ for (var language in Prism.languages) {
if (type == 'comment') {
def.inside['md-link'] = linkMd;
}
if (type == 'attr-value') {
Prism.languages.insertBefore('inside', 'punctuation', { 'url-link': url }, def);
}
else {
def.inside['url-link'] = url;
}

def.inside['url-link'] = url;
def.inside['email-link'] = email;
}
});
Expand All @@ -43,7 +48,7 @@ Prism.hooks.add('wrap', function(env) {

var href = env.content;

if (env.type == 'email-link') {
if (env.type == 'email-link' && href.indexOf('mailto:') != 0) {
href = 'mailto:' + href;
}
else if (env.type == 'md-link') {
Expand Down

0 comments on commit 88696fa

Please sign in to comment.