OLD | NEW |
1 Prism.languages.markdown = Prism.languages.extend('markup', {}); | 1 Prism.languages.markdown = Prism.languages.extend('markup', {}); |
2 Prism.languages.insertBefore('markdown', 'prolog', { | 2 Prism.languages.insertBefore('markdown', 'prolog', { |
3 'blockquote': { | 3 'blockquote': { |
4 // > ... | 4 // > ... |
5 » » pattern: /(^|\n)>(?:[\t ]*>)*/, | 5 » » pattern: /^>(?:[\t ]*>)*/m, |
6 » » lookbehind: true, | |
7 alias: 'punctuation' | 6 alias: 'punctuation' |
8 }, | 7 }, |
9 'code': [ | 8 'code': [ |
10 { | 9 { |
11 // Prefixed by 4 spaces or 1 tab | 10 // Prefixed by 4 spaces or 1 tab |
12 » » » pattern: /(^|\n)(?: {4}|\t).+/, | 11 » » » pattern: /^(?: {4}|\t).+/m, |
13 » » » lookbehind: true, | |
14 alias: 'keyword' | 12 alias: 'keyword' |
15 }, | 13 }, |
16 { | 14 { |
17 // `code` | 15 // `code` |
18 // ``code`` | 16 // ``code`` |
19 pattern: /``.+?``|`[^`\n]+`/, | 17 pattern: /``.+?``|`[^`\n]+`/, |
20 alias: 'keyword' | 18 alias: 'keyword' |
21 } | 19 } |
22 ], | 20 ], |
23 'title': [ | 21 'title': [ |
24 { | 22 { |
25 // title 1 | 23 // title 1 |
26 // ======= | 24 // ======= |
27 | 25 |
28 // title 2 | 26 // title 2 |
29 // ------- | 27 // ------- |
30 » » » pattern: /\w+.*\n(?:==+|--+)/, | 28 » » » pattern: /\w+.*(?:\r?\n|\r)(?:==+|--+)/, |
31 alias: 'important', | 29 alias: 'important', |
32 inside: { | 30 inside: { |
33 punctuation: /==+$|--+$/ | 31 punctuation: /==+$|--+$/ |
34 } | 32 } |
35 }, | 33 }, |
36 { | 34 { |
37 // # title 1 | 35 // # title 1 |
38 // ###### title 6 | 36 // ###### title 6 |
39 » » » pattern: /((?:^|\n)\s*)#+.+/, | 37 » » » pattern: /(^\s*)#+.+/m, |
40 lookbehind: true, | 38 lookbehind: true, |
41 alias: 'important', | 39 alias: 'important', |
42 inside: { | 40 inside: { |
43 punctuation: /^#+|#+$/ | 41 punctuation: /^#+|#+$/ |
44 } | 42 } |
45 } | 43 } |
46 ], | 44 ], |
47 'hr': { | 45 'hr': { |
48 // *** | 46 // *** |
49 // --- | 47 // --- |
50 // * * * | 48 // * * * |
51 // ----------- | 49 // ----------- |
52 » » pattern: /((?:^|\n)\s*)([*-])([\t ]*\2){2,}(?=\s*(?:\n|$))/, | 50 » » pattern: /(^\s*)([*-])([\t ]*\2){2,}(?=\s*$)/m, |
53 lookbehind: true, | 51 lookbehind: true, |
54 alias: 'punctuation' | 52 alias: 'punctuation' |
55 }, | 53 }, |
56 'list': { | 54 'list': { |
57 // * item | 55 // * item |
58 // + item | 56 // + item |
59 // - item | 57 // - item |
60 // 1. item | 58 // 1. item |
61 » » pattern: /((?:^|\n)\s*)(?:[*+-]|\d+\.)(?=[\t ].)/, | 59 » » pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, |
62 lookbehind: true, | 60 lookbehind: true, |
63 alias: 'punctuation' | 61 alias: 'punctuation' |
64 }, | 62 }, |
65 'url-reference': { | 63 'url-reference': { |
66 // [id]: http://example.com "Optional title" | 64 // [id]: http://example.com "Optional title" |
67 // [id]: http://example.com 'Optional title' | 65 // [id]: http://example.com 'Optional title' |
68 // [id]: http://example.com (Optional title) | 66 // [id]: http://example.com (Optional title) |
69 // [id]: <http://example.com> "Optional title" | 67 // [id]: <http://example.com> "Optional title" |
70 » » pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:[^>]|\\>)+>)(?:[\t ]+(?:
"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\)))?/, | 68 » » pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(
?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, |
71 inside: { | 69 inside: { |
72 'variable': { | 70 'variable': { |
73 pattern: /^(!?\[)[^\]]+/, | 71 pattern: /^(!?\[)[^\]]+/, |
74 lookbehind: true | 72 lookbehind: true |
75 }, | 73 }, |
76 » » » 'string': /(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|
\\\))*\))$/, | 74 » » » 'string': /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\
\.|[^)\\])*\))$/, |
77 » » » 'punctuation': /[[\]\(\)<>:]/ | 75 » » » 'punctuation': /^[\[\]!:]|[<>]/ |
78 }, | 76 }, |
79 alias: 'url' | 77 alias: 'url' |
80 }, | 78 }, |
81 'bold': { | 79 'bold': { |
82 // **strong** | 80 // **strong** |
83 // __strong__ | 81 // __strong__ |
84 | 82 |
85 // Allow only one line break | 83 // Allow only one line break |
86 » » pattern: /(^|[^\\])(\*\*|__)(?:\n(?!\n)|.)+?\2/, | 84 » » pattern: /(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, |
87 lookbehind: true, | 85 lookbehind: true, |
88 inside: { | 86 inside: { |
89 » » » 'punctuation': /^\*\*|^__|\*\*\s*$|__\s*$/ | 87 » » » 'punctuation': /^\*\*|^__|\*\*$|__$/ |
90 } | 88 } |
91 }, | 89 }, |
92 'italic': { | 90 'italic': { |
93 // *em* | 91 // *em* |
94 // _em_ | 92 // _em_ |
95 | 93 |
96 // Allow only one line break | 94 // Allow only one line break |
97 » » pattern: /(^|[^\\])(?:\*(?:\n(?!\n)|.)+?\*|_(?:\n(?!\n)|.)+?_)/, | 95 » » pattern: /(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, |
98 lookbehind: true, | 96 lookbehind: true, |
99 inside: { | 97 inside: { |
100 'punctuation': /^[*_]|[*_]$/ | 98 'punctuation': /^[*_]|[*_]$/ |
101 } | 99 } |
102 }, | 100 }, |
103 'url': { | 101 'url': { |
104 // [example](http://example.com "Optional title") | 102 // [example](http://example.com "Optional title") |
105 // [example] [id] | 103 // [example] [id] |
106 » » pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:[^"]|\\")*")?\)|
?\[[^\]\n]*\])/, | 104 » » pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)
| ?\[[^\]\n]*\])/, |
107 inside: { | 105 inside: { |
108 'variable': { | 106 'variable': { |
109 pattern: /(!?\[)[^\]]+(?=\]$)/, | 107 pattern: /(!?\[)[^\]]+(?=\]$)/, |
110 lookbehind: true | 108 lookbehind: true |
111 }, | 109 }, |
112 'string': { | 110 'string': { |
113 » » » » pattern: /"(?:[^"]|\\")*"(?=\)$)/ | 111 » » » » pattern: /"(?:\\.|[^"\\])*"(?=\)$)/ |
114 } | 112 } |
115 } | 113 } |
116 } | 114 } |
117 }); | 115 }); |
118 | 116 |
119 Prism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.language
s.markdown['url']); | 117 Prism.languages.markdown['bold'].inside['url'] = Prism.util.clone(Prism.language
s.markdown['url']); |
120 Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.langua
ges.markdown['url']); | 118 Prism.languages.markdown['italic'].inside['url'] = Prism.util.clone(Prism.langua
ges.markdown['url']); |
121 Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.langu
ages.markdown['italic']); | 119 Prism.languages.markdown['bold'].inside['italic'] = Prism.util.clone(Prism.langu
ages.markdown['italic']); |
122 Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.langu
ages.markdown['bold']); | 120 Prism.languages.markdown['italic'].inside['bold'] = Prism.util.clone(Prism.langu
ages.markdown['bold']); |
OLD | NEW |