UNPKG

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