UNPKG

4.62 kBJavaScriptView Raw
1Prism.languages.rest = {
2 'table': [
3 {
4 pattern: /(\s*)(?:\+[=-]+)+\+(?:\r?\n|\r)(?:\1(?:[+|].+)+[+|](?:\r?\n|\r))+\1(?:\+[=-]+)+\+/,
5 lookbehind: true,
6 inside: {
7 'punctuation': /\||(?:\+[=-]+)+\+/
8 }
9 },
10 {
11 pattern: /(\s*)(?:=+ +)+=+((?:\r?\n|\r)\1.+)+(?:\r?\n|\r)\1(?:=+ +)+=+(?=(?:\r?\n|\r){2}|\s*$)/,
12 lookbehind: true,
13 inside: {
14 'punctuation': /[=-]+/
15 }
16 }
17 ],
18
19 // Directive-like patterns
20
21 'substitution-def': {
22 pattern: /(^\s*\.\. )\|(?:[^|\s]|[^|\s][^|]*[^|\s])\| [^:]+::/m,
23 lookbehind: true,
24 inside: {
25 'substitution': {
26 pattern: /^\|(?:[^|\s]|[^|\s][^|]*[^|\s])\|/,
27 alias: 'attr-value',
28 inside: {
29 'punctuation': /^\||\|$/
30 }
31 },
32 'directive': {
33 pattern: /( )[^:]+::/,
34 lookbehind: true,
35 alias: 'function',
36 inside: {
37 'punctuation': /::$/
38 }
39 }
40 }
41 },
42 'link-target': [
43 {
44 pattern: /(^\s*\.\. )\[[^\]]+\]/m,
45 lookbehind: true,
46 alias: 'string',
47 inside: {
48 'punctuation': /^\[|\]$/
49 }
50 },
51 {
52 pattern: /(^\s*\.\. )_(?:`[^`]+`|(?:\\:|[^:])+):/m,
53 lookbehind: true,
54 alias: 'string',
55 inside: {
56 'punctuation': /^_|:$/
57 }
58 }
59 ],
60 'directive': {
61 pattern: /(^\s*\.\. )[^:]+::/m,
62 lookbehind: true,
63 alias: 'function',
64 inside: {
65 'punctuation': /::$/
66 }
67 },
68 'comment': {
69 pattern: /(^\s*\.\.\s).*(?:(?:\r?\n|\r).*)*?(?=(?:\r?\n|\r){2}|$)/m,
70 lookbehind: true
71 },
72
73 'title': [
74 // Overlined and underlined
75 {
76 pattern: /^([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{2,})(?:\r?\n|\r).+(?:\r?\n|\r)\1$/m,
77 inside: {
78 'punctuation': /^[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,
79 'important': /.+/
80 }
81 },
82
83 // Underlined only
84 {
85 pattern: /(^|(?:\r?\n|\r){2}).+(?:\r?\n|\r)[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{2,}(?=\r?\n|\r|$)/,
86 lookbehind: true,
87 inside: {
88 'punctuation': /[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]+$/,
89 'important': /.+/
90 }
91 }
92 ],
93 'hr': {
94 pattern: /((?:\r?\n|\r){2})[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{4,}(?=(?:\r?\n|\r){2})/,
95 lookbehind: true,
96 alias: 'punctuation'
97 },
98 'list-bullet': {
99 pattern: /(^\s*)(?:[*+\-•‣⁃]|\(?(?:\d+|[a-z]|[ivxdclm]+)\)|(?:\d+|[a-z]|[ivxdclm]+)\.)(?= )/im,
100 lookbehind: true,
101 alias: 'punctuation'
102 },
103 'field': {
104 pattern: /(^\s*):[^:]+:(?= )/m,
105 lookbehind: true,
106 alias: 'attr-name'
107 },
108 'command-line-option': {
109 pattern: /(^\s*)(?:[+-][a-z\d]|(?:\-\-|\/)[a-z\d-]+)(?:[ =](?:[a-z][a-z\d_-]*|<[^<>]+>))?(?:, (?:[+-][a-z\d]|(?:\-\-|\/)[a-z\d-]+)(?:[ =](?:[a-z][a-z\d_-]*|<[^<>]+>))?)*(?=(?:\r?\n|\r)? {2,}[\S])/im,
110 lookbehind: true,
111 alias: 'symbol'
112 },
113 'literal-block': {
114 pattern: /::(?:\r?\n|\r){2}([ \t]+).+(?:(?:\r?\n|\r)\1.+)*/,
115 inside: {
116 'literal-block-punctuation': {
117 pattern: /^::/,
118 alias: 'punctuation'
119 }
120 }
121 },
122 'quoted-literal-block': {
123 pattern: /::(?:\r?\n|\r){2}([!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]).*(?:(?:\r?\n|\r)\1.*)*/,
124 inside: {
125 'literal-block-punctuation': {
126 pattern: /^(?:::|[!"#$%&'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~])/m,
127 alias: 'punctuation'
128 }
129 }
130 },
131 'doctest-block': {
132 pattern: /(^\s*)>>> .+(?:(?:\r?\n|\r).+)*/m,
133 lookbehind: true,
134 inside: {
135 'punctuation': /^>>>/
136 }
137 },
138
139 'inline': [
140 {
141 pattern: /(^|[\s\-:\/'"<(\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\*\*?|``?|\|)(?!\s).*?[^\s]\2(?=[\s\-.,:;!?\\\/'")\]}]|$))/m,
142 lookbehind: true,
143 inside: {
144 'bold': {
145 pattern: /(^\*\*).+(?=\*\*$)/,
146 lookbehind: true
147 },
148 'italic': {
149 pattern: /(^\*).+(?=\*$)/,
150 lookbehind: true
151 },
152 'inline-literal': {
153 pattern: /(^``).+(?=``$)/,
154 lookbehind: true,
155 alias: 'symbol'
156 },
157 'role': {
158 pattern: /^:[^:]+:|:[^:]+:$/,
159 alias: 'function',
160 inside: {
161 'punctuation': /^:|:$/
162 }
163 },
164 'interpreted-text': {
165 pattern: /(^`).+(?=`$)/,
166 lookbehind: true,
167 alias: 'attr-value'
168 },
169 'substitution': {
170 pattern: /(^\|).+(?=\|$)/,
171 lookbehind: true,
172 alias: 'attr-value'
173 },
174 'punctuation': /\*\*?|``?|\|/
175 }
176 }
177 ],
178
179 'link': [
180 {
181 pattern: /\[[^\]]+\]_(?=[\s\-.,:;!?\\\/'")\]}]|$)/,
182 alias: 'string',
183 inside: {
184 'punctuation': /^\[|\]_$/
185 }
186 },
187 {
188 pattern: /(?:\b[a-z\d](?:[_.:+]?[a-z\d]+)?_?_|`[^`]+`_?_|_`[^`]+`)(?=[\s\-.,:;!?\\\/'")\]}]|$)/i,
189 alias: 'string',
190 inside: {
191 'punctuation': /^_?`|`?_?_$/
192 }
193 }
194 ],
195
196 // Line block start,
197 // quote attribution,
198 // explicit markup start,
199 // and anonymous hyperlink target shortcut (__)
200 'punctuation': {
201 pattern: /(^\s*)(?:\|(?= |$)|(?:---?|—|\.\.|__)(?= )|\.\.$)/m,
202 lookbehind: true
203 }
204};
\No newline at end of file