Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(507)

Side by Side Diff: lib/src/prism/plugins/autolinker/prism-autolinker.js

Issue 1418513006: update elements and fix some bugs (Closed) Base URL: git@github.com:dart-lang/polymer_elements.git@master
Patch Set: code review updates Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « lib/src/prism/package.json ('k') | lib/src/prism/plugins/autolinker/prism-autolinker.min.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 (function(){ 1 (function(){
2 2
3 if (!self.Prism) { 3 if (
4 » typeof self !== 'undefined' && !self.Prism ||
5 » typeof global !== 'undefined' && !global.Prism
6 ) {
4 return; 7 return;
5 } 8 }
6 9
7 var url = /\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:#=?&]+/, 10 var url = /\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:#=?&]+/,
8 email = /\b\S+@[\w.]+[a-z]{2}/, 11 email = /\b\S+@[\w.]+[a-z]{2}/,
9 linkMd = /\[([^\]]+)]\(([^)]+)\)/, 12 linkMd = /\[([^\]]+)]\(([^)]+)\)/,
10 13
11 // Tokens that may contain URLs and emails 14 // Tokens that may contain URLs and emails
12 candidates = ['comment', 'url', 'attr-value', 'string']; 15 candidates = ['comment', 'url', 'attr-value', 'string'];
13 16
14 for (var language in Prism.languages) { 17 Prism.hooks.add('before-highlight', function(env) {
15 » var tokens = Prism.languages[language]; 18 » // Abort if grammar has already been processed
16 » 19 » if (!env.grammar || env.grammar['url-link']) {
17 » Prism.languages.DFS(tokens, function (key, def, type) { 20 » » return;
21 » }
22 » Prism.languages.DFS(env.grammar, function (key, def, type) {
18 if (candidates.indexOf(type) > -1 && Prism.util.type(def) !== 'A rray') { 23 if (candidates.indexOf(type) > -1 && Prism.util.type(def) !== 'A rray') {
19 if (!def.pattern) { 24 if (!def.pattern) {
20 def = this[key] = { 25 def = this[key] = {
21 pattern: def 26 pattern: def
22 }; 27 };
23 } 28 }
24 » » » 29
25 def.inside = def.inside || {}; 30 def.inside = def.inside || {};
26 » » » 31
27 if (type == 'comment') { 32 if (type == 'comment') {
28 def.inside['md-link'] = linkMd; 33 def.inside['md-link'] = linkMd;
29 } 34 }
30 if (type == 'attr-value') { 35 if (type == 'attr-value') {
31 Prism.languages.insertBefore('inside', 'punctuat ion', { 'url-link': url }, def); 36 Prism.languages.insertBefore('inside', 'punctuat ion', { 'url-link': url }, def);
32 } 37 }
33 else { 38 else {
34 def.inside['url-link'] = url; 39 def.inside['url-link'] = url;
35 } 40 }
36 » » » 41
37 def.inside['email-link'] = email; 42 def.inside['email-link'] = email;
38 } 43 }
39 }); 44 });
40 » 45 » env.grammar['url-link'] = url;
41 » tokens['url-link'] = url; 46 » env.grammar['email-link'] = email;
42 » tokens['email-link'] = email; 47 });
43 }
44 48
45 Prism.hooks.add('wrap', function(env) { 49 Prism.hooks.add('wrap', function(env) {
46 if (/-link$/.test(env.type)) { 50 if (/-link$/.test(env.type)) {
47 env.tag = 'a'; 51 env.tag = 'a';
48 52
49 var href = env.content; 53 var href = env.content;
50 54
51 if (env.type == 'email-link' && href.indexOf('mailto:') != 0) { 55 if (env.type == 'email-link' && href.indexOf('mailto:') != 0) {
52 href = 'mailto:' + href; 56 href = 'mailto:' + href;
53 } 57 }
54 else if (env.type == 'md-link') { 58 else if (env.type == 'md-link') {
55 // Markdown 59 // Markdown
56 var match = env.content.match(linkMd); 60 var match = env.content.match(linkMd);
57 61
58 href = match[2]; 62 href = match[2];
59 env.content = match[1]; 63 env.content = match[1];
60 } 64 }
61 65
62 env.attributes.href = href; 66 env.attributes.href = href;
63 } 67 }
64 }); 68 });
65 69
66 })(); 70 })();
OLDNEW
« no previous file with comments | « lib/src/prism/package.json ('k') | lib/src/prism/plugins/autolinker/prism-autolinker.min.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698