@lotte-innovate/ui-component-test 0.1.109 → 0.1.110

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. package/dist/lib/components/Editor/index.js +1 -2
  2. package/dist/lib/components/Editor/index.mjs +1 -1
  3. package/dist/lib/tsconfig.tsbuildinfo +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/package.json +1 -2
  6. package/public/tinymce/CHANGELOG.md +0 -3453
  7. package/public/tinymce/README.md +0 -73
  8. package/public/tinymce/bower.json +0 -27
  9. package/public/tinymce/composer.json +0 -52
  10. package/public/tinymce/icons/default/icons.js +0 -194
  11. package/public/tinymce/icons/default/icons.min.js +0 -1
  12. package/public/tinymce/icons/default/index.js +0 -7
  13. package/public/tinymce/license.txt +0 -21
  14. package/public/tinymce/models/dom/index.js +0 -7
  15. package/public/tinymce/models/dom/model.js +0 -8040
  16. package/public/tinymce/models/dom/model.min.js +0 -4
  17. package/public/tinymce/package.json +0 -32
  18. package/public/tinymce/plugins/advlist/index.js +0 -7
  19. package/public/tinymce/plugins/advlist/plugin.js +0 -259
  20. package/public/tinymce/plugins/advlist/plugin.min.js +0 -4
  21. package/public/tinymce/plugins/autolink/index.js +0 -7
  22. package/public/tinymce/plugins/autolink/plugin.js +0 -228
  23. package/public/tinymce/plugins/autolink/plugin.min.js +0 -4
  24. package/public/tinymce/plugins/code/index.js +0 -7
  25. package/public/tinymce/plugins/code/plugin.js +0 -85
  26. package/public/tinymce/plugins/code/plugin.min.js +0 -4
  27. package/public/tinymce/plugins/codesample/index.js +0 -7
  28. package/public/tinymce/plugins/codesample/plugin.js +0 -2463
  29. package/public/tinymce/plugins/codesample/plugin.min.js +0 -4
  30. package/public/tinymce/plugins/image/index.js +0 -7
  31. package/public/tinymce/plugins/image/plugin.js +0 -1505
  32. package/public/tinymce/plugins/image/plugin.min.js +0 -4
  33. package/public/tinymce/plugins/link/index.js +0 -7
  34. package/public/tinymce/plugins/link/plugin.js +0 -1242
  35. package/public/tinymce/plugins/link/plugin.min.js +0 -4
  36. package/public/tinymce/plugins/lists/index.js +0 -7
  37. package/public/tinymce/plugins/lists/plugin.js +0 -2172
  38. package/public/tinymce/plugins/lists/plugin.min.js +0 -4
  39. package/public/tinymce/plugins/table/index.js +0 -7
  40. package/public/tinymce/plugins/table/plugin.js +0 -3462
  41. package/public/tinymce/plugins/table/plugin.min.js +0 -4
  42. package/public/tinymce/skins/content/default/content.css +0 -61
  43. package/public/tinymce/skins/content/default/content.js +0 -2
  44. package/public/tinymce/skins/content/default/content.min.css +0 -1
  45. package/public/tinymce/skins/ui/oxide/content.css +0 -785
  46. package/public/tinymce/skins/ui/oxide/content.inline.css +0 -779
  47. package/public/tinymce/skins/ui/oxide/content.inline.js +0 -2
  48. package/public/tinymce/skins/ui/oxide/content.inline.min.css +0 -1
  49. package/public/tinymce/skins/ui/oxide/content.js +0 -2
  50. package/public/tinymce/skins/ui/oxide/content.min.css +0 -1
  51. package/public/tinymce/skins/ui/oxide/skin.css +0 -3763
  52. package/public/tinymce/skins/ui/oxide/skin.js +0 -2
  53. package/public/tinymce/skins/ui/oxide/skin.min.css +0 -1
  54. package/public/tinymce/skins/ui/oxide/skin.shadowdom.css +0 -30
  55. package/public/tinymce/skins/ui/oxide/skin.shadowdom.js +0 -2
  56. package/public/tinymce/skins/ui/oxide/skin.shadowdom.min.css +0 -1
  57. package/public/tinymce/skins/ui/oxide-dark/content.css +0 -766
  58. package/public/tinymce/skins/ui/oxide-dark/content.inline.css +0 -779
  59. package/public/tinymce/skins/ui/oxide-dark/content.inline.js +0 -2
  60. package/public/tinymce/skins/ui/oxide-dark/content.inline.min.css +0 -1
  61. package/public/tinymce/skins/ui/oxide-dark/content.js +0 -2
  62. package/public/tinymce/skins/ui/oxide-dark/content.min.css +0 -1
  63. package/public/tinymce/skins/ui/oxide-dark/skin.css +0 -3766
  64. package/public/tinymce/skins/ui/oxide-dark/skin.js +0 -2
  65. package/public/tinymce/skins/ui/oxide-dark/skin.min.css +0 -1
  66. package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.css +0 -30
  67. package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.js +0 -2
  68. package/public/tinymce/skins/ui/oxide-dark/skin.shadowdom.min.css +0 -1
  69. package/public/tinymce/themes/silver/index.js +0 -7
  70. package/public/tinymce/themes/silver/theme.js +0 -30775
  71. package/public/tinymce/themes/silver/theme.min.js +0 -384
  72. package/public/tinymce/tinymce.d.ts +0 -3238
  73. package/public/tinymce/tinymce.js +0 -31779
  74. package/public/tinymce/tinymce.min.js +0 -384
@@ -1,2463 +0,0 @@
1
- /**
2
- * TinyMCE version 6.8.5 (TBD)
3
- */
4
-
5
- (function () {
6
- 'use strict';
7
-
8
- var global$2 = tinymce.util.Tools.resolve('tinymce.PluginManager');
9
-
10
- const isNullable = a => a === null || a === undefined;
11
- const isNonNullable = a => !isNullable(a);
12
-
13
- const noop = () => {
14
- };
15
- const constant = value => {
16
- return () => {
17
- return value;
18
- };
19
- };
20
-
21
- class Optional {
22
- constructor(tag, value) {
23
- this.tag = tag;
24
- this.value = value;
25
- }
26
- static some(value) {
27
- return new Optional(true, value);
28
- }
29
- static none() {
30
- return Optional.singletonNone;
31
- }
32
- fold(onNone, onSome) {
33
- if (this.tag) {
34
- return onSome(this.value);
35
- } else {
36
- return onNone();
37
- }
38
- }
39
- isSome() {
40
- return this.tag;
41
- }
42
- isNone() {
43
- return !this.tag;
44
- }
45
- map(mapper) {
46
- if (this.tag) {
47
- return Optional.some(mapper(this.value));
48
- } else {
49
- return Optional.none();
50
- }
51
- }
52
- bind(binder) {
53
- if (this.tag) {
54
- return binder(this.value);
55
- } else {
56
- return Optional.none();
57
- }
58
- }
59
- exists(predicate) {
60
- return this.tag && predicate(this.value);
61
- }
62
- forall(predicate) {
63
- return !this.tag || predicate(this.value);
64
- }
65
- filter(predicate) {
66
- if (!this.tag || predicate(this.value)) {
67
- return this;
68
- } else {
69
- return Optional.none();
70
- }
71
- }
72
- getOr(replacement) {
73
- return this.tag ? this.value : replacement;
74
- }
75
- or(replacement) {
76
- return this.tag ? this : replacement;
77
- }
78
- getOrThunk(thunk) {
79
- return this.tag ? this.value : thunk();
80
- }
81
- orThunk(thunk) {
82
- return this.tag ? this : thunk();
83
- }
84
- getOrDie(message) {
85
- if (!this.tag) {
86
- throw new Error(message !== null && message !== void 0 ? message : 'Called getOrDie on None');
87
- } else {
88
- return this.value;
89
- }
90
- }
91
- static from(value) {
92
- return isNonNullable(value) ? Optional.some(value) : Optional.none();
93
- }
94
- getOrNull() {
95
- return this.tag ? this.value : null;
96
- }
97
- getOrUndefined() {
98
- return this.value;
99
- }
100
- each(worker) {
101
- if (this.tag) {
102
- worker(this.value);
103
- }
104
- }
105
- toArray() {
106
- return this.tag ? [this.value] : [];
107
- }
108
- toString() {
109
- return this.tag ? `some(${ this.value })` : 'none()';
110
- }
111
- }
112
- Optional.singletonNone = new Optional(false);
113
-
114
- const get$1 = (xs, i) => i >= 0 && i < xs.length ? Optional.some(xs[i]) : Optional.none();
115
- const head = xs => get$1(xs, 0);
116
-
117
- var global$1 = tinymce.util.Tools.resolve('tinymce.dom.DOMUtils');
118
-
119
- const Global = typeof window !== 'undefined' ? window : Function('return this;')();
120
-
121
- const prismjs = function (global, module, exports) {
122
- const oldprism = window.Prism;
123
- window.Prism = { manual: true };
124
- var _self = typeof window !== 'undefined' ? window : typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope ? self : {};
125
- var Prism = function (_self) {
126
- var lang = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i;
127
- var uniqueId = 0;
128
- var plainTextGrammar = {};
129
- var _ = {
130
- manual: _self.Prism && _self.Prism.manual,
131
- disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,
132
- util: {
133
- encode: function encode(tokens) {
134
- if (tokens instanceof Token) {
135
- return new Token(tokens.type, encode(tokens.content), tokens.alias);
136
- } else if (Array.isArray(tokens)) {
137
- return tokens.map(encode);
138
- } else {
139
- return tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\u00a0/g, ' ');
140
- }
141
- },
142
- type: function (o) {
143
- return Object.prototype.toString.call(o).slice(8, -1);
144
- },
145
- objId: function (obj) {
146
- if (!obj['__id']) {
147
- Object.defineProperty(obj, '__id', { value: ++uniqueId });
148
- }
149
- return obj['__id'];
150
- },
151
- clone: function deepClone(o, visited) {
152
- visited = visited || {};
153
- var clone;
154
- var id;
155
- switch (_.util.type(o)) {
156
- case 'Object':
157
- id = _.util.objId(o);
158
- if (visited[id]) {
159
- return visited[id];
160
- }
161
- clone = {};
162
- visited[id] = clone;
163
- for (var key in o) {
164
- if (o.hasOwnProperty(key)) {
165
- clone[key] = deepClone(o[key], visited);
166
- }
167
- }
168
- return clone;
169
- case 'Array':
170
- id = _.util.objId(o);
171
- if (visited[id]) {
172
- return visited[id];
173
- }
174
- clone = [];
175
- visited[id] = clone;
176
- o.forEach(function (v, i) {
177
- clone[i] = deepClone(v, visited);
178
- });
179
- return clone;
180
- default:
181
- return o;
182
- }
183
- },
184
- getLanguage: function (element) {
185
- while (element) {
186
- var m = lang.exec(element.className);
187
- if (m) {
188
- return m[1].toLowerCase();
189
- }
190
- element = element.parentElement;
191
- }
192
- return 'none';
193
- },
194
- setLanguage: function (element, language) {
195
- element.className = element.className.replace(RegExp(lang, 'gi'), '');
196
- element.classList.add('language-' + language);
197
- },
198
- currentScript: function () {
199
- if (typeof document === 'undefined') {
200
- return null;
201
- }
202
- if ('currentScript' in document && 1 < 2) {
203
- return document.currentScript;
204
- }
205
- try {
206
- throw new Error();
207
- } catch (err) {
208
- var src = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(err.stack) || [])[1];
209
- if (src) {
210
- var scripts = document.getElementsByTagName('script');
211
- for (var i in scripts) {
212
- if (scripts[i].src == src) {
213
- return scripts[i];
214
- }
215
- }
216
- }
217
- return null;
218
- }
219
- },
220
- isActive: function (element, className, defaultActivation) {
221
- var no = 'no-' + className;
222
- while (element) {
223
- var classList = element.classList;
224
- if (classList.contains(className)) {
225
- return true;
226
- }
227
- if (classList.contains(no)) {
228
- return false;
229
- }
230
- element = element.parentElement;
231
- }
232
- return !!defaultActivation;
233
- }
234
- },
235
- languages: {
236
- plain: plainTextGrammar,
237
- plaintext: plainTextGrammar,
238
- text: plainTextGrammar,
239
- txt: plainTextGrammar,
240
- extend: function (id, redef) {
241
- var lang = _.util.clone(_.languages[id]);
242
- for (var key in redef) {
243
- lang[key] = redef[key];
244
- }
245
- return lang;
246
- },
247
- insertBefore: function (inside, before, insert, root) {
248
- root = root || _.languages;
249
- var grammar = root[inside];
250
- var ret = {};
251
- for (var token in grammar) {
252
- if (grammar.hasOwnProperty(token)) {
253
- if (token == before) {
254
- for (var newToken in insert) {
255
- if (insert.hasOwnProperty(newToken)) {
256
- ret[newToken] = insert[newToken];
257
- }
258
- }
259
- }
260
- if (!insert.hasOwnProperty(token)) {
261
- ret[token] = grammar[token];
262
- }
263
- }
264
- }
265
- var old = root[inside];
266
- root[inside] = ret;
267
- _.languages.DFS(_.languages, function (key, value) {
268
- if (value === old && key != inside) {
269
- this[key] = ret;
270
- }
271
- });
272
- return ret;
273
- },
274
- DFS: function DFS(o, callback, type, visited) {
275
- visited = visited || {};
276
- var objId = _.util.objId;
277
- for (var i in o) {
278
- if (o.hasOwnProperty(i)) {
279
- callback.call(o, i, o[i], type || i);
280
- var property = o[i];
281
- var propertyType = _.util.type(property);
282
- if (propertyType === 'Object' && !visited[objId(property)]) {
283
- visited[objId(property)] = true;
284
- DFS(property, callback, null, visited);
285
- } else if (propertyType === 'Array' && !visited[objId(property)]) {
286
- visited[objId(property)] = true;
287
- DFS(property, callback, i, visited);
288
- }
289
- }
290
- }
291
- }
292
- },
293
- plugins: {},
294
- highlightAll: function (async, callback) {
295
- _.highlightAllUnder(document, async, callback);
296
- },
297
- highlightAllUnder: function (container, async, callback) {
298
- var env = {
299
- callback: callback,
300
- container: container,
301
- selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'
302
- };
303
- _.hooks.run('before-highlightall', env);
304
- env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));
305
- _.hooks.run('before-all-elements-highlight', env);
306
- for (var i = 0, element; element = env.elements[i++];) {
307
- _.highlightElement(element, async === true, env.callback);
308
- }
309
- },
310
- highlightElement: function (element, async, callback) {
311
- var language = _.util.getLanguage(element);
312
- var grammar = _.languages[language];
313
- _.util.setLanguage(element, language);
314
- var parent = element.parentElement;
315
- if (parent && parent.nodeName.toLowerCase() === 'pre') {
316
- _.util.setLanguage(parent, language);
317
- }
318
- var code = element.textContent;
319
- var env = {
320
- element: element,
321
- language: language,
322
- grammar: grammar,
323
- code: code
324
- };
325
- function insertHighlightedCode(highlightedCode) {
326
- env.highlightedCode = highlightedCode;
327
- _.hooks.run('before-insert', env);
328
- env.element.innerHTML = env.highlightedCode;
329
- _.hooks.run('after-highlight', env);
330
- _.hooks.run('complete', env);
331
- callback && callback.call(env.element);
332
- }
333
- _.hooks.run('before-sanity-check', env);
334
- parent = env.element.parentElement;
335
- if (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {
336
- parent.setAttribute('tabindex', '0');
337
- }
338
- if (!env.code) {
339
- _.hooks.run('complete', env);
340
- callback && callback.call(env.element);
341
- return;
342
- }
343
- _.hooks.run('before-highlight', env);
344
- if (!env.grammar) {
345
- insertHighlightedCode(_.util.encode(env.code));
346
- return;
347
- }
348
- if (async && _self.Worker) {
349
- var worker = new Worker(_.filename);
350
- worker.onmessage = function (evt) {
351
- insertHighlightedCode(evt.data);
352
- };
353
- worker.postMessage(JSON.stringify({
354
- language: env.language,
355
- code: env.code,
356
- immediateClose: true
357
- }));
358
- } else {
359
- insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));
360
- }
361
- },
362
- highlight: function (text, grammar, language) {
363
- var env = {
364
- code: text,
365
- grammar: grammar,
366
- language: language
367
- };
368
- _.hooks.run('before-tokenize', env);
369
- if (!env.grammar) {
370
- throw new Error('The language "' + env.language + '" has no grammar.');
371
- }
372
- env.tokens = _.tokenize(env.code, env.grammar);
373
- _.hooks.run('after-tokenize', env);
374
- return Token.stringify(_.util.encode(env.tokens), env.language);
375
- },
376
- tokenize: function (text, grammar) {
377
- var rest = grammar.rest;
378
- if (rest) {
379
- for (var token in rest) {
380
- grammar[token] = rest[token];
381
- }
382
- delete grammar.rest;
383
- }
384
- var tokenList = new LinkedList();
385
- addAfter(tokenList, tokenList.head, text);
386
- matchGrammar(text, tokenList, grammar, tokenList.head, 0);
387
- return toArray(tokenList);
388
- },
389
- hooks: {
390
- all: {},
391
- add: function (name, callback) {
392
- var hooks = _.hooks.all;
393
- hooks[name] = hooks[name] || [];
394
- hooks[name].push(callback);
395
- },
396
- run: function (name, env) {
397
- var callbacks = _.hooks.all[name];
398
- if (!callbacks || !callbacks.length) {
399
- return;
400
- }
401
- for (var i = 0, callback; callback = callbacks[i++];) {
402
- callback(env);
403
- }
404
- }
405
- },
406
- Token: Token
407
- };
408
- _self.Prism = _;
409
- function Token(type, content, alias, matchedStr) {
410
- this.type = type;
411
- this.content = content;
412
- this.alias = alias;
413
- this.length = (matchedStr || '').length | 0;
414
- }
415
- Token.stringify = function stringify(o, language) {
416
- if (typeof o == 'string') {
417
- return o;
418
- }
419
- if (Array.isArray(o)) {
420
- var s = '';
421
- o.forEach(function (e) {
422
- s += stringify(e, language);
423
- });
424
- return s;
425
- }
426
- var env = {
427
- type: o.type,
428
- content: stringify(o.content, language),
429
- tag: 'span',
430
- classes: [
431
- 'token',
432
- o.type
433
- ],
434
- attributes: {},
435
- language: language
436
- };
437
- var aliases = o.alias;
438
- if (aliases) {
439
- if (Array.isArray(aliases)) {
440
- Array.prototype.push.apply(env.classes, aliases);
441
- } else {
442
- env.classes.push(aliases);
443
- }
444
- }
445
- _.hooks.run('wrap', env);
446
- var attributes = '';
447
- for (var name in env.attributes) {
448
- attributes += ' ' + name + '="' + (env.attributes[name] || '').replace(/"/g, '&quot;') + '"';
449
- }
450
- return '<' + env.tag + ' class="' + env.classes.join(' ') + '"' + attributes + '>' + env.content + '</' + env.tag + '>';
451
- };
452
- function matchPattern(pattern, pos, text, lookbehind) {
453
- pattern.lastIndex = pos;
454
- var match = pattern.exec(text);
455
- if (match && lookbehind && match[1]) {
456
- var lookbehindLength = match[1].length;
457
- match.index += lookbehindLength;
458
- match[0] = match[0].slice(lookbehindLength);
459
- }
460
- return match;
461
- }
462
- function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {
463
- for (var token in grammar) {
464
- if (!grammar.hasOwnProperty(token) || !grammar[token]) {
465
- continue;
466
- }
467
- var patterns = grammar[token];
468
- patterns = Array.isArray(patterns) ? patterns : [patterns];
469
- for (var j = 0; j < patterns.length; ++j) {
470
- if (rematch && rematch.cause == token + ',' + j) {
471
- return;
472
- }
473
- var patternObj = patterns[j];
474
- var inside = patternObj.inside;
475
- var lookbehind = !!patternObj.lookbehind;
476
- var greedy = !!patternObj.greedy;
477
- var alias = patternObj.alias;
478
- if (greedy && !patternObj.pattern.global) {
479
- var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];
480
- patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');
481
- }
482
- var pattern = patternObj.pattern || patternObj;
483
- for (var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next) {
484
- if (rematch && pos >= rematch.reach) {
485
- break;
486
- }
487
- var str = currentNode.value;
488
- if (tokenList.length > text.length) {
489
- return;
490
- }
491
- if (str instanceof Token) {
492
- continue;
493
- }
494
- var removeCount = 1;
495
- var match;
496
- if (greedy) {
497
- match = matchPattern(pattern, pos, text, lookbehind);
498
- if (!match || match.index >= text.length) {
499
- break;
500
- }
501
- var from = match.index;
502
- var to = match.index + match[0].length;
503
- var p = pos;
504
- p += currentNode.value.length;
505
- while (from >= p) {
506
- currentNode = currentNode.next;
507
- p += currentNode.value.length;
508
- }
509
- p -= currentNode.value.length;
510
- pos = p;
511
- if (currentNode.value instanceof Token) {
512
- continue;
513
- }
514
- for (var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === 'string'); k = k.next) {
515
- removeCount++;
516
- p += k.value.length;
517
- }
518
- removeCount--;
519
- str = text.slice(pos, p);
520
- match.index -= pos;
521
- } else {
522
- match = matchPattern(pattern, 0, str, lookbehind);
523
- if (!match) {
524
- continue;
525
- }
526
- }
527
- var from = match.index;
528
- var matchStr = match[0];
529
- var before = str.slice(0, from);
530
- var after = str.slice(from + matchStr.length);
531
- var reach = pos + str.length;
532
- if (rematch && reach > rematch.reach) {
533
- rematch.reach = reach;
534
- }
535
- var removeFrom = currentNode.prev;
536
- if (before) {
537
- removeFrom = addAfter(tokenList, removeFrom, before);
538
- pos += before.length;
539
- }
540
- removeRange(tokenList, removeFrom, removeCount);
541
- var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);
542
- currentNode = addAfter(tokenList, removeFrom, wrapped);
543
- if (after) {
544
- addAfter(tokenList, currentNode, after);
545
- }
546
- if (removeCount > 1) {
547
- var nestedRematch = {
548
- cause: token + ',' + j,
549
- reach: reach
550
- };
551
- matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);
552
- if (rematch && nestedRematch.reach > rematch.reach) {
553
- rematch.reach = nestedRematch.reach;
554
- }
555
- }
556
- }
557
- }
558
- }
559
- }
560
- function LinkedList() {
561
- var head = {
562
- value: null,
563
- prev: null,
564
- next: null
565
- };
566
- var tail = {
567
- value: null,
568
- prev: head,
569
- next: null
570
- };
571
- head.next = tail;
572
- this.head = head;
573
- this.tail = tail;
574
- this.length = 0;
575
- }
576
- function addAfter(list, node, value) {
577
- var next = node.next;
578
- var newNode = {
579
- value: value,
580
- prev: node,
581
- next: next
582
- };
583
- node.next = newNode;
584
- next.prev = newNode;
585
- list.length++;
586
- return newNode;
587
- }
588
- function removeRange(list, node, count) {
589
- var next = node.next;
590
- for (var i = 0; i < count && next !== list.tail; i++) {
591
- next = next.next;
592
- }
593
- node.next = next;
594
- next.prev = node;
595
- list.length -= i;
596
- }
597
- function toArray(list) {
598
- var array = [];
599
- var node = list.head.next;
600
- while (node !== list.tail) {
601
- array.push(node.value);
602
- node = node.next;
603
- }
604
- return array;
605
- }
606
- if (!_self.document) {
607
- if (!_self.addEventListener) {
608
- return _;
609
- }
610
- if (!_.disableWorkerMessageHandler) {
611
- _self.addEventListener('message', function (evt) {
612
- var message = JSON.parse(evt.data);
613
- var lang = message.language;
614
- var code = message.code;
615
- var immediateClose = message.immediateClose;
616
- _self.postMessage(_.highlight(code, _.languages[lang], lang));
617
- if (immediateClose) {
618
- _self.close();
619
- }
620
- }, false);
621
- }
622
- return _;
623
- }
624
- var script = _.util.currentScript();
625
- if (script) {
626
- _.filename = script.src;
627
- if (script.hasAttribute('data-manual')) {
628
- _.manual = true;
629
- }
630
- }
631
- function highlightAutomaticallyCallback() {
632
- if (!_.manual) {
633
- _.highlightAll();
634
- }
635
- }
636
- if (!_.manual) {
637
- var readyState = document.readyState;
638
- if (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {
639
- document.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);
640
- } else {
641
- if (window.requestAnimationFrame) {
642
- window.requestAnimationFrame(highlightAutomaticallyCallback);
643
- } else {
644
- window.setTimeout(highlightAutomaticallyCallback, 16);
645
- }
646
- }
647
- }
648
- return _;
649
- }(_self);
650
- if (typeof module !== 'undefined' && module.exports) {
651
- module.exports = Prism;
652
- }
653
- if (typeof global !== 'undefined') {
654
- global.Prism = Prism;
655
- }
656
- Prism.languages.clike = {
657
- 'comment': [
658
- {
659
- pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,
660
- lookbehind: true,
661
- greedy: true
662
- },
663
- {
664
- pattern: /(^|[^\\:])\/\/.*/,
665
- lookbehind: true,
666
- greedy: true
667
- }
668
- ],
669
- 'string': {
670
- pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,
671
- greedy: true
672
- },
673
- 'class-name': {
674
- pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,
675
- lookbehind: true,
676
- inside: { 'punctuation': /[.\\]/ }
677
- },
678
- 'keyword': /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,
679
- 'boolean': /\b(?:false|true)\b/,
680
- 'function': /\b\w+(?=\()/,
681
- 'number': /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,
682
- 'operator': /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,
683
- 'punctuation': /[{}[\];(),.:]/
684
- };
685
- (function (Prism) {
686
- function getPlaceholder(language, index) {
687
- return '___' + language.toUpperCase() + index + '___';
688
- }
689
- Object.defineProperties(Prism.languages['markup-templating'] = {}, {
690
- buildPlaceholders: {
691
- value: function (env, language, placeholderPattern, replaceFilter) {
692
- if (env.language !== language) {
693
- return;
694
- }
695
- var tokenStack = env.tokenStack = [];
696
- env.code = env.code.replace(placeholderPattern, function (match) {
697
- if (typeof replaceFilter === 'function' && !replaceFilter(match)) {
698
- return match;
699
- }
700
- var i = tokenStack.length;
701
- var placeholder;
702
- while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {
703
- ++i;
704
- }
705
- tokenStack[i] = match;
706
- return placeholder;
707
- });
708
- env.grammar = Prism.languages.markup;
709
- }
710
- },
711
- tokenizePlaceholders: {
712
- value: function (env, language) {
713
- if (env.language !== language || !env.tokenStack) {
714
- return;
715
- }
716
- env.grammar = Prism.languages[language];
717
- var j = 0;
718
- var keys = Object.keys(env.tokenStack);
719
- function walkTokens(tokens) {
720
- for (var i = 0; i < tokens.length; i++) {
721
- if (j >= keys.length) {
722
- break;
723
- }
724
- var token = tokens[i];
725
- if (typeof token === 'string' || token.content && typeof token.content === 'string') {
726
- var k = keys[j];
727
- var t = env.tokenStack[k];
728
- var s = typeof token === 'string' ? token : token.content;
729
- var placeholder = getPlaceholder(language, k);
730
- var index = s.indexOf(placeholder);
731
- if (index > -1) {
732
- ++j;
733
- var before = s.substring(0, index);
734
- var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);
735
- var after = s.substring(index + placeholder.length);
736
- var replacement = [];
737
- if (before) {
738
- replacement.push.apply(replacement, walkTokens([before]));
739
- }
740
- replacement.push(middle);
741
- if (after) {
742
- replacement.push.apply(replacement, walkTokens([after]));
743
- }
744
- if (typeof token === 'string') {
745
- tokens.splice.apply(tokens, [
746
- i,
747
- 1
748
- ].concat(replacement));
749
- } else {
750
- token.content = replacement;
751
- }
752
- }
753
- } else if (token.content) {
754
- walkTokens(token.content);
755
- }
756
- }
757
- return tokens;
758
- }
759
- walkTokens(env.tokens);
760
- }
761
- }
762
- });
763
- }(Prism));
764
- Prism.languages.c = Prism.languages.extend('clike', {
765
- 'comment': {
766
- pattern: /\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,
767
- greedy: true
768
- },
769
- 'string': {
770
- pattern: /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,
771
- greedy: true
772
- },
773
- 'class-name': {
774
- pattern: /(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,
775
- lookbehind: true
776
- },
777
- 'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,
778
- 'function': /\b[a-z_]\w*(?=\s*\()/i,
779
- 'number': /(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,
780
- 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/
781
- });
782
- Prism.languages.insertBefore('c', 'string', {
783
- 'char': {
784
- pattern: /'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,
785
- greedy: true
786
- }
787
- });
788
- Prism.languages.insertBefore('c', 'string', {
789
- 'macro': {
790
- pattern: /(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,
791
- lookbehind: true,
792
- greedy: true,
793
- alias: 'property',
794
- inside: {
795
- 'string': [
796
- {
797
- pattern: /^(#\s*include\s*)<[^>]+>/,
798
- lookbehind: true
799
- },
800
- Prism.languages.c['string']
801
- ],
802
- 'char': Prism.languages.c['char'],
803
- 'comment': Prism.languages.c['comment'],
804
- 'macro-name': [
805
- {
806
- pattern: /(^#\s*define\s+)\w+\b(?!\()/i,
807
- lookbehind: true
808
- },
809
- {
810
- pattern: /(^#\s*define\s+)\w+\b(?=\()/i,
811
- lookbehind: true,
812
- alias: 'function'
813
- }
814
- ],
815
- 'directive': {
816
- pattern: /^(#\s*)[a-z]+/,
817
- lookbehind: true,
818
- alias: 'keyword'
819
- },
820
- 'directive-hash': /^#/,
821
- 'punctuation': /##|\\(?=[\r\n])/,
822
- 'expression': {
823
- pattern: /\S[\s\S]*/,
824
- inside: Prism.languages.c
825
- }
826
- }
827
- }
828
- });
829
- Prism.languages.insertBefore('c', 'function', { 'constant': /\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/ });
830
- delete Prism.languages.c['boolean'];
831
- (function (Prism) {
832
- var keyword = /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/;
833
- var modName = /\b(?!<keyword>)\w+(?:\s*\.\s*\w+)*\b/.source.replace(/<keyword>/g, function () {
834
- return keyword.source;
835
- });
836
- Prism.languages.cpp = Prism.languages.extend('c', {
837
- 'class-name': [
838
- {
839
- pattern: RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!<keyword>)\w+/.source.replace(/<keyword>/g, function () {
840
- return keyword.source;
841
- })),
842
- lookbehind: true
843
- },
844
- /\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,
845
- /\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,
846
- /\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/
847
- ],
848
- 'keyword': keyword,
849
- 'number': {
850
- pattern: /(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,
851
- greedy: true
852
- },
853
- 'operator': />>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,
854
- 'boolean': /\b(?:false|true)\b/
855
- });
856
- Prism.languages.insertBefore('cpp', 'string', {
857
- 'module': {
858
- pattern: RegExp(/(\b(?:import|module)\s+)/.source + '(?:' + /"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source + '|' + /<mod-name>(?:\s*:\s*<mod-name>)?|:\s*<mod-name>/.source.replace(/<mod-name>/g, function () {
859
- return modName;
860
- }) + ')'),
861
- lookbehind: true,
862
- greedy: true,
863
- inside: {
864
- 'string': /^[<"][\s\S]+/,
865
- 'operator': /:/,
866
- 'punctuation': /\./
867
- }
868
- },
869
- 'raw-string': {
870
- pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,
871
- alias: 'string',
872
- greedy: true
873
- }
874
- });
875
- Prism.languages.insertBefore('cpp', 'keyword', {
876
- 'generic-function': {
877
- pattern: /\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,
878
- inside: {
879
- 'function': /^\w+/,
880
- 'generic': {
881
- pattern: /<[\s\S]+/,
882
- alias: 'class-name',
883
- inside: Prism.languages.cpp
884
- }
885
- }
886
- }
887
- });
888
- Prism.languages.insertBefore('cpp', 'operator', {
889
- 'double-colon': {
890
- pattern: /::/,
891
- alias: 'punctuation'
892
- }
893
- });
894
- Prism.languages.insertBefore('cpp', 'class-name', {
895
- 'base-clause': {
896
- pattern: /(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,
897
- lookbehind: true,
898
- greedy: true,
899
- inside: Prism.languages.extend('cpp', {})
900
- }
901
- });
902
- Prism.languages.insertBefore('inside', 'double-colon', { 'class-name': /\b[a-z_]\w*\b(?!\s*::)/i }, Prism.languages.cpp['base-clause']);
903
- }(Prism));
904
- (function (Prism) {
905
- function replace(pattern, replacements) {
906
- return pattern.replace(/<<(\d+)>>/g, function (m, index) {
907
- return '(?:' + replacements[+index] + ')';
908
- });
909
- }
910
- function re(pattern, replacements, flags) {
911
- return RegExp(replace(pattern, replacements), flags || '');
912
- }
913
- function nested(pattern, depthLog2) {
914
- for (var i = 0; i < depthLog2; i++) {
915
- pattern = pattern.replace(/<<self>>/g, function () {
916
- return '(?:' + pattern + ')';
917
- });
918
- }
919
- return pattern.replace(/<<self>>/g, '[^\\s\\S]');
920
- }
921
- var keywordKinds = {
922
- type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',
923
- typeDeclaration: 'class enum interface record struct',
924
- contextual: 'add alias and ascending async await by descending from(?=\\s*(?:\\w|$)) get global group into init(?=\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\s*{)',
925
- other: 'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'
926
- };
927
- function keywordsToPattern(words) {
928
- return '\\b(?:' + words.trim().replace(/ /g, '|') + ')\\b';
929
- }
930
- var typeDeclarationKeywords = keywordsToPattern(keywordKinds.typeDeclaration);
931
- var keywords = RegExp(keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other));
932
- var nonTypeKeywords = keywordsToPattern(keywordKinds.typeDeclaration + ' ' + keywordKinds.contextual + ' ' + keywordKinds.other);
933
- var nonContextualKeywords = keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.typeDeclaration + ' ' + keywordKinds.other);
934
- var generic = nested(/<(?:[^<>;=+\-*/%&|^]|<<self>>)*>/.source, 2);
935
- var nestedRound = nested(/\((?:[^()]|<<self>>)*\)/.source, 2);
936
- var name = /@?\b[A-Za-z_]\w*\b/.source;
937
- var genericName = replace(/<<0>>(?:\s*<<1>>)?/.source, [
938
- name,
939
- generic
940
- ]);
941
- var identifier = replace(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source, [
942
- nonTypeKeywords,
943
- genericName
944
- ]);
945
- var array = /\[\s*(?:,\s*)*\]/.source;
946
- var typeExpressionWithoutTuple = replace(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source, [
947
- identifier,
948
- array
949
- ]);
950
- var tupleElement = replace(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source, [
951
- generic,
952
- nestedRound,
953
- array
954
- ]);
955
- var tuple = replace(/\(<<0>>+(?:,<<0>>+)+\)/.source, [tupleElement]);
956
- var typeExpression = replace(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source, [
957
- tuple,
958
- identifier,
959
- array
960
- ]);
961
- var typeInside = {
962
- 'keyword': keywords,
963
- 'punctuation': /[<>()?,.:[\]]/
964
- };
965
- var character = /'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source;
966
- var regularString = /"(?:\\.|[^\\"\r\n])*"/.source;
967
- var verbatimString = /@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;
968
- Prism.languages.csharp = Prism.languages.extend('clike', {
969
- 'string': [
970
- {
971
- pattern: re(/(^|[^$\\])<<0>>/.source, [verbatimString]),
972
- lookbehind: true,
973
- greedy: true
974
- },
975
- {
976
- pattern: re(/(^|[^@$\\])<<0>>/.source, [regularString]),
977
- lookbehind: true,
978
- greedy: true
979
- }
980
- ],
981
- 'class-name': [
982
- {
983
- pattern: re(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source, [identifier]),
984
- lookbehind: true,
985
- inside: typeInside
986
- },
987
- {
988
- pattern: re(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source, [
989
- name,
990
- typeExpression
991
- ]),
992
- lookbehind: true,
993
- inside: typeInside
994
- },
995
- {
996
- pattern: re(/(\busing\s+)<<0>>(?=\s*=)/.source, [name]),
997
- lookbehind: true
998
- },
999
- {
1000
- pattern: re(/(\b<<0>>\s+)<<1>>/.source, [
1001
- typeDeclarationKeywords,
1002
- genericName
1003
- ]),
1004
- lookbehind: true,
1005
- inside: typeInside
1006
- },
1007
- {
1008
- pattern: re(/(\bcatch\s*\(\s*)<<0>>/.source, [identifier]),
1009
- lookbehind: true,
1010
- inside: typeInside
1011
- },
1012
- {
1013
- pattern: re(/(\bwhere\s+)<<0>>/.source, [name]),
1014
- lookbehind: true
1015
- },
1016
- {
1017
- pattern: re(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source, [typeExpressionWithoutTuple]),
1018
- lookbehind: true,
1019
- inside: typeInside
1020
- },
1021
- {
1022
- pattern: re(/\b<<0>>(?=\s+(?!<<1>>|with\s*\{)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source, [
1023
- typeExpression,
1024
- nonContextualKeywords,
1025
- name
1026
- ]),
1027
- inside: typeInside
1028
- }
1029
- ],
1030
- 'keyword': keywords,
1031
- 'number': /(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:[dflmu]|lu|ul)?\b/i,
1032
- 'operator': />>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,
1033
- 'punctuation': /\?\.?|::|[{}[\];(),.:]/
1034
- });
1035
- Prism.languages.insertBefore('csharp', 'number', {
1036
- 'range': {
1037
- pattern: /\.\./,
1038
- alias: 'operator'
1039
- }
1040
- });
1041
- Prism.languages.insertBefore('csharp', 'punctuation', {
1042
- 'named-parameter': {
1043
- pattern: re(/([(,]\s*)<<0>>(?=\s*:)/.source, [name]),
1044
- lookbehind: true,
1045
- alias: 'punctuation'
1046
- }
1047
- });
1048
- Prism.languages.insertBefore('csharp', 'class-name', {
1049
- 'namespace': {
1050
- pattern: re(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source, [name]),
1051
- lookbehind: true,
1052
- inside: { 'punctuation': /\./ }
1053
- },
1054
- 'type-expression': {
1055
- pattern: re(/(\b(?:default|sizeof|typeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source, [nestedRound]),
1056
- lookbehind: true,
1057
- alias: 'class-name',
1058
- inside: typeInside
1059
- },
1060
- 'return-type': {
1061
- pattern: re(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source, [
1062
- typeExpression,
1063
- identifier
1064
- ]),
1065
- inside: typeInside,
1066
- alias: 'class-name'
1067
- },
1068
- 'constructor-invocation': {
1069
- pattern: re(/(\bnew\s+)<<0>>(?=\s*[[({])/.source, [typeExpression]),
1070
- lookbehind: true,
1071
- inside: typeInside,
1072
- alias: 'class-name'
1073
- },
1074
- 'generic-method': {
1075
- pattern: re(/<<0>>\s*<<1>>(?=\s*\()/.source, [
1076
- name,
1077
- generic
1078
- ]),
1079
- inside: {
1080
- 'function': re(/^<<0>>/.source, [name]),
1081
- 'generic': {
1082
- pattern: RegExp(generic),
1083
- alias: 'class-name',
1084
- inside: typeInside
1085
- }
1086
- }
1087
- },
1088
- 'type-list': {
1089
- pattern: re(/\b((?:<<0>>\s+<<1>>|record\s+<<1>>\s*<<5>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>|<<1>>\s*<<5>>|<<6>>)(?:\s*,\s*(?:<<3>>|<<4>>|<<6>>))*(?=\s*(?:where|[{;]|=>|$))/.source, [
1090
- typeDeclarationKeywords,
1091
- genericName,
1092
- name,
1093
- typeExpression,
1094
- keywords.source,
1095
- nestedRound,
1096
- /\bnew\s*\(\s*\)/.source
1097
- ]),
1098
- lookbehind: true,
1099
- inside: {
1100
- 'record-arguments': {
1101
- pattern: re(/(^(?!new\s*\()<<0>>\s*)<<1>>/.source, [
1102
- genericName,
1103
- nestedRound
1104
- ]),
1105
- lookbehind: true,
1106
- greedy: true,
1107
- inside: Prism.languages.csharp
1108
- },
1109
- 'keyword': keywords,
1110
- 'class-name': {
1111
- pattern: RegExp(typeExpression),
1112
- greedy: true,
1113
- inside: typeInside
1114
- },
1115
- 'punctuation': /[,()]/
1116
- }
1117
- },
1118
- 'preprocessor': {
1119
- pattern: /(^[\t ]*)#.*/m,
1120
- lookbehind: true,
1121
- alias: 'property',
1122
- inside: {
1123
- 'directive': {
1124
- pattern: /(#)\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\b/,
1125
- lookbehind: true,
1126
- alias: 'keyword'
1127
- }
1128
- }
1129
- }
1130
- });
1131
- var regularStringOrCharacter = regularString + '|' + character;
1132
- var regularStringCharacterOrComment = replace(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source, [regularStringOrCharacter]);
1133
- var roundExpression = nested(replace(/[^"'/()]|<<0>>|\(<<self>>*\)/.source, [regularStringCharacterOrComment]), 2);
1134
- var attrTarget = /\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source;
1135
- var attr = replace(/<<0>>(?:\s*\(<<1>>*\))?/.source, [
1136
- identifier,
1137
- roundExpression
1138
- ]);
1139
- Prism.languages.insertBefore('csharp', 'class-name', {
1140
- 'attribute': {
1141
- pattern: re(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source, [
1142
- attrTarget,
1143
- attr
1144
- ]),
1145
- lookbehind: true,
1146
- greedy: true,
1147
- inside: {
1148
- 'target': {
1149
- pattern: re(/^<<0>>(?=\s*:)/.source, [attrTarget]),
1150
- alias: 'keyword'
1151
- },
1152
- 'attribute-arguments': {
1153
- pattern: re(/\(<<0>>*\)/.source, [roundExpression]),
1154
- inside: Prism.languages.csharp
1155
- },
1156
- 'class-name': {
1157
- pattern: RegExp(identifier),
1158
- inside: { 'punctuation': /\./ }
1159
- },
1160
- 'punctuation': /[:,]/
1161
- }
1162
- }
1163
- });
1164
- var formatString = /:[^}\r\n]+/.source;
1165
- var mInterpolationRound = nested(replace(/[^"'/()]|<<0>>|\(<<self>>*\)/.source, [regularStringCharacterOrComment]), 2);
1166
- var mInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [
1167
- mInterpolationRound,
1168
- formatString
1169
- ]);
1170
- var sInterpolationRound = nested(replace(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<<self>>*\)/.source, [regularStringOrCharacter]), 2);
1171
- var sInterpolation = replace(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source, [
1172
- sInterpolationRound,
1173
- formatString
1174
- ]);
1175
- function createInterpolationInside(interpolation, interpolationRound) {
1176
- return {
1177
- 'interpolation': {
1178
- pattern: re(/((?:^|[^{])(?:\{\{)*)<<0>>/.source, [interpolation]),
1179
- lookbehind: true,
1180
- inside: {
1181
- 'format-string': {
1182
- pattern: re(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source, [
1183
- interpolationRound,
1184
- formatString
1185
- ]),
1186
- lookbehind: true,
1187
- inside: { 'punctuation': /^:/ }
1188
- },
1189
- 'punctuation': /^\{|\}$/,
1190
- 'expression': {
1191
- pattern: /[\s\S]+/,
1192
- alias: 'language-csharp',
1193
- inside: Prism.languages.csharp
1194
- }
1195
- }
1196
- },
1197
- 'string': /[\s\S]+/
1198
- };
1199
- }
1200
- Prism.languages.insertBefore('csharp', 'string', {
1201
- 'interpolation-string': [
1202
- {
1203
- pattern: re(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source, [mInterpolation]),
1204
- lookbehind: true,
1205
- greedy: true,
1206
- inside: createInterpolationInside(mInterpolation, mInterpolationRound)
1207
- },
1208
- {
1209
- pattern: re(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source, [sInterpolation]),
1210
- lookbehind: true,
1211
- greedy: true,
1212
- inside: createInterpolationInside(sInterpolation, sInterpolationRound)
1213
- }
1214
- ],
1215
- 'char': {
1216
- pattern: RegExp(character),
1217
- greedy: true
1218
- }
1219
- });
1220
- Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp;
1221
- }(Prism));
1222
- (function (Prism) {
1223
- var string = /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;
1224
- Prism.languages.css = {
1225
- 'comment': /\/\*[\s\S]*?\*\//,
1226
- 'atrule': {
1227
- pattern: RegExp('@[\\w-](?:' + /[^;{\s"']|\s+(?!\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\s*\{))/.source),
1228
- inside: {
1229
- 'rule': /^@[\w-]+/,
1230
- 'selector-function-argument': {
1231
- pattern: /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,
1232
- lookbehind: true,
1233
- alias: 'selector'
1234
- },
1235
- 'keyword': {
1236
- pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
1237
- lookbehind: true
1238
- }
1239
- }
1240
- },
1241
- 'url': {
1242
- pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
1243
- greedy: true,
1244
- inside: {
1245
- 'function': /^url/i,
1246
- 'punctuation': /^\(|\)$/,
1247
- 'string': {
1248
- pattern: RegExp('^' + string.source + '$'),
1249
- alias: 'url'
1250
- }
1251
- }
1252
- },
1253
- 'selector': {
1254
- pattern: RegExp('(^|[{}\\s])[^{}\\s](?:[^{};"\'\\s]|\\s+(?![\\s{])|' + string.source + ')*(?=\\s*\\{)'),
1255
- lookbehind: true
1256
- },
1257
- 'string': {
1258
- pattern: string,
1259
- greedy: true
1260
- },
1261
- 'property': {
1262
- pattern: /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,
1263
- lookbehind: true
1264
- },
1265
- 'important': /!important\b/i,
1266
- 'function': {
1267
- pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,
1268
- lookbehind: true
1269
- },
1270
- 'punctuation': /[(){};:,]/
1271
- };
1272
- Prism.languages.css['atrule'].inside.rest = Prism.languages.css;
1273
- var markup = Prism.languages.markup;
1274
- if (markup) {
1275
- markup.tag.addInlined('style', 'css');
1276
- markup.tag.addAttribute('style', 'css');
1277
- }
1278
- }(Prism));
1279
- (function (Prism) {
1280
- var keywords = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/;
1281
- var classNamePrefix = /(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source;
1282
- var className = {
1283
- pattern: RegExp(/(^|[^\w.])/.source + classNamePrefix + /[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source),
1284
- lookbehind: true,
1285
- inside: {
1286
- 'namespace': {
1287
- pattern: /^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/,
1288
- inside: { 'punctuation': /\./ }
1289
- },
1290
- 'punctuation': /\./
1291
- }
1292
- };
1293
- Prism.languages.java = Prism.languages.extend('clike', {
1294
- 'string': {
1295
- pattern: /(^|[^\\])"(?:\\.|[^"\\\r\n])*"/,
1296
- lookbehind: true,
1297
- greedy: true
1298
- },
1299
- 'class-name': [
1300
- className,
1301
- {
1302
- pattern: RegExp(/(^|[^\w.])/.source + classNamePrefix + /[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source),
1303
- lookbehind: true,
1304
- inside: className.inside
1305
- },
1306
- {
1307
- pattern: RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source + classNamePrefix + /[A-Z]\w*\b/.source),
1308
- lookbehind: true,
1309
- inside: className.inside
1310
- }
1311
- ],
1312
- 'keyword': keywords,
1313
- 'function': [
1314
- Prism.languages.clike.function,
1315
- {
1316
- pattern: /(::\s*)[a-z_]\w*/,
1317
- lookbehind: true
1318
- }
1319
- ],
1320
- 'number': /\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i,
1321
- 'operator': {
1322
- pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,
1323
- lookbehind: true
1324
- },
1325
- 'constant': /\b[A-Z][A-Z_\d]+\b/
1326
- });
1327
- Prism.languages.insertBefore('java', 'string', {
1328
- 'triple-quoted-string': {
1329
- pattern: /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/,
1330
- greedy: true,
1331
- alias: 'string'
1332
- },
1333
- 'char': {
1334
- pattern: /'(?:\\.|[^'\\\r\n]){1,6}'/,
1335
- greedy: true
1336
- }
1337
- });
1338
- Prism.languages.insertBefore('java', 'class-name', {
1339
- 'annotation': {
1340
- pattern: /(^|[^.])@\w+(?:\s*\.\s*\w+)*/,
1341
- lookbehind: true,
1342
- alias: 'punctuation'
1343
- },
1344
- 'generics': {
1345
- pattern: /<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/,
1346
- inside: {
1347
- 'class-name': className,
1348
- 'keyword': keywords,
1349
- 'punctuation': /[<>(),.:]/,
1350
- 'operator': /[?&|]/
1351
- }
1352
- },
1353
- 'import': [
1354
- {
1355
- pattern: RegExp(/(\bimport\s+)/.source + classNamePrefix + /(?:[A-Z]\w*|\*)(?=\s*;)/.source),
1356
- lookbehind: true,
1357
- inside: {
1358
- 'namespace': className.inside.namespace,
1359
- 'punctuation': /\./,
1360
- 'operator': /\*/,
1361
- 'class-name': /\w+/
1362
- }
1363
- },
1364
- {
1365
- pattern: RegExp(/(\bimport\s+static\s+)/.source + classNamePrefix + /(?:\w+|\*)(?=\s*;)/.source),
1366
- lookbehind: true,
1367
- alias: 'static',
1368
- inside: {
1369
- 'namespace': className.inside.namespace,
1370
- 'static': /\b\w+$/,
1371
- 'punctuation': /\./,
1372
- 'operator': /\*/,
1373
- 'class-name': /\w+/
1374
- }
1375
- }
1376
- ],
1377
- 'namespace': {
1378
- pattern: RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g, function () {
1379
- return keywords.source;
1380
- })),
1381
- lookbehind: true,
1382
- inside: { 'punctuation': /\./ }
1383
- }
1384
- });
1385
- }(Prism));
1386
- Prism.languages.javascript = Prism.languages.extend('clike', {
1387
- 'class-name': [
1388
- Prism.languages.clike['class-name'],
1389
- {
1390
- pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,
1391
- lookbehind: true
1392
- }
1393
- ],
1394
- 'keyword': [
1395
- {
1396
- pattern: /((?:^|\})\s*)catch\b/,
1397
- lookbehind: true
1398
- },
1399
- {
1400
- pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,
1401
- lookbehind: true
1402
- }
1403
- ],
1404
- 'function': /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
1405
- 'number': {
1406
- pattern: RegExp(/(^|[^\w$])/.source + '(?:' + (/NaN|Infinity/.source + '|' + /0[bB][01]+(?:_[01]+)*n?/.source + '|' + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + '|' + /0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source + '|' + /\d+(?:_\d+)*n/.source + '|' + /(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source) + ')' + /(?![\w$])/.source),
1407
- lookbehind: true
1408
- },
1409
- 'operator': /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/
1410
- });
1411
- Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/;
1412
- Prism.languages.insertBefore('javascript', 'keyword', {
1413
- 'regex': {
1414
- pattern: RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source + /\//.source + '(?:' + /(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source + '|' + /(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + ')' + /(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),
1415
- lookbehind: true,
1416
- greedy: true,
1417
- inside: {
1418
- 'regex-source': {
1419
- pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
1420
- lookbehind: true,
1421
- alias: 'language-regex',
1422
- inside: Prism.languages.regex
1423
- },
1424
- 'regex-delimiter': /^\/|\/$/,
1425
- 'regex-flags': /^[a-z]+$/
1426
- }
1427
- },
1428
- 'function-variable': {
1429
- pattern: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,
1430
- alias: 'function'
1431
- },
1432
- 'parameter': [
1433
- {
1434
- pattern: /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,
1435
- lookbehind: true,
1436
- inside: Prism.languages.javascript
1437
- },
1438
- {
1439
- pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,
1440
- lookbehind: true,
1441
- inside: Prism.languages.javascript
1442
- },
1443
- {
1444
- pattern: /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,
1445
- lookbehind: true,
1446
- inside: Prism.languages.javascript
1447
- },
1448
- {
1449
- pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,
1450
- lookbehind: true,
1451
- inside: Prism.languages.javascript
1452
- }
1453
- ],
1454
- 'constant': /\b[A-Z](?:[A-Z_]|\dx?)*\b/
1455
- });
1456
- Prism.languages.insertBefore('javascript', 'string', {
1457
- 'hashbang': {
1458
- pattern: /^#!.*/,
1459
- greedy: true,
1460
- alias: 'comment'
1461
- },
1462
- 'template-string': {
1463
- pattern: /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,
1464
- greedy: true,
1465
- inside: {
1466
- 'template-punctuation': {
1467
- pattern: /^`|`$/,
1468
- alias: 'string'
1469
- },
1470
- 'interpolation': {
1471
- pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,
1472
- lookbehind: true,
1473
- inside: {
1474
- 'interpolation-punctuation': {
1475
- pattern: /^\$\{|\}$/,
1476
- alias: 'punctuation'
1477
- },
1478
- rest: Prism.languages.javascript
1479
- }
1480
- },
1481
- 'string': /[\s\S]+/
1482
- }
1483
- },
1484
- 'string-property': {
1485
- pattern: /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,
1486
- lookbehind: true,
1487
- greedy: true,
1488
- alias: 'property'
1489
- }
1490
- });
1491
- Prism.languages.insertBefore('javascript', 'operator', {
1492
- 'literal-property': {
1493
- pattern: /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,
1494
- lookbehind: true,
1495
- alias: 'property'
1496
- }
1497
- });
1498
- if (Prism.languages.markup) {
1499
- Prism.languages.markup.tag.addInlined('script', 'javascript');
1500
- Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, 'javascript');
1501
- }
1502
- Prism.languages.js = Prism.languages.javascript;
1503
- Prism.languages.markup = {
1504
- 'comment': {
1505
- pattern: /<!--(?:(?!<!--)[\s\S])*?-->/,
1506
- greedy: true
1507
- },
1508
- 'prolog': {
1509
- pattern: /<\?[\s\S]+?\?>/,
1510
- greedy: true
1511
- },
1512
- 'doctype': {
1513
- pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,
1514
- greedy: true,
1515
- inside: {
1516
- 'internal-subset': {
1517
- pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/,
1518
- lookbehind: true,
1519
- greedy: true,
1520
- inside: null
1521
- },
1522
- 'string': {
1523
- pattern: /"[^"]*"|'[^']*'/,
1524
- greedy: true
1525
- },
1526
- 'punctuation': /^<!|>$|[[\]]/,
1527
- 'doctype-tag': /^DOCTYPE/i,
1528
- 'name': /[^\s<>'"]+/
1529
- }
1530
- },
1531
- 'cdata': {
1532
- pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
1533
- greedy: true
1534
- },
1535
- 'tag': {
1536
- pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,
1537
- greedy: true,
1538
- inside: {
1539
- 'tag': {
1540
- pattern: /^<\/?[^\s>\/]+/,
1541
- inside: {
1542
- 'punctuation': /^<\/?/,
1543
- 'namespace': /^[^\s>\/:]+:/
1544
- }
1545
- },
1546
- 'special-attr': [],
1547
- 'attr-value': {
1548
- pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,
1549
- inside: {
1550
- 'punctuation': [
1551
- {
1552
- pattern: /^=/,
1553
- alias: 'attr-equals'
1554
- },
1555
- {
1556
- pattern: /^(\s*)["']|["']$/,
1557
- lookbehind: true
1558
- }
1559
- ]
1560
- }
1561
- },
1562
- 'punctuation': /\/?>/,
1563
- 'attr-name': {
1564
- pattern: /[^\s>\/]+/,
1565
- inside: { 'namespace': /^[^\s>\/:]+:/ }
1566
- }
1567
- }
1568
- },
1569
- 'entity': [
1570
- {
1571
- pattern: /&[\da-z]{1,8};/i,
1572
- alias: 'named-entity'
1573
- },
1574
- /&#x?[\da-f]{1,8};/i
1575
- ]
1576
- };
1577
- Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity'];
1578
- Prism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;
1579
- Prism.hooks.add('wrap', function (env) {
1580
- if (env.type === 'entity') {
1581
- env.attributes['title'] = env.content.replace(/&amp;/, '&');
1582
- }
1583
- });
1584
- Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {
1585
- value: function addInlined(tagName, lang) {
1586
- var includedCdataInside = {};
1587
- includedCdataInside['language-' + lang] = {
1588
- pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
1589
- lookbehind: true,
1590
- inside: Prism.languages[lang]
1591
- };
1592
- includedCdataInside['cdata'] = /^<!\[CDATA\[|\]\]>$/i;
1593
- var inside = {
1594
- 'included-cdata': {
1595
- pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
1596
- inside: includedCdataInside
1597
- }
1598
- };
1599
- inside['language-' + lang] = {
1600
- pattern: /[\s\S]+/,
1601
- inside: Prism.languages[lang]
1602
- };
1603
- var def = {};
1604
- def[tagName] = {
1605
- pattern: RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g, function () {
1606
- return tagName;
1607
- }), 'i'),
1608
- lookbehind: true,
1609
- greedy: true,
1610
- inside: inside
1611
- };
1612
- Prism.languages.insertBefore('markup', 'cdata', def);
1613
- }
1614
- });
1615
- Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', {
1616
- value: function (attrName, lang) {
1617
- Prism.languages.markup.tag.inside['special-attr'].push({
1618
- pattern: RegExp(/(^|["'\s])/.source + '(?:' + attrName + ')' + /\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source, 'i'),
1619
- lookbehind: true,
1620
- inside: {
1621
- 'attr-name': /^[^\s=]+/,
1622
- 'attr-value': {
1623
- pattern: /=[\s\S]+/,
1624
- inside: {
1625
- 'value': {
1626
- pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,
1627
- lookbehind: true,
1628
- alias: [
1629
- lang,
1630
- 'language-' + lang
1631
- ],
1632
- inside: Prism.languages[lang]
1633
- },
1634
- 'punctuation': [
1635
- {
1636
- pattern: /^=/,
1637
- alias: 'attr-equals'
1638
- },
1639
- /"|'/
1640
- ]
1641
- }
1642
- }
1643
- }
1644
- });
1645
- }
1646
- });
1647
- Prism.languages.html = Prism.languages.markup;
1648
- Prism.languages.mathml = Prism.languages.markup;
1649
- Prism.languages.svg = Prism.languages.markup;
1650
- Prism.languages.xml = Prism.languages.extend('markup', {});
1651
- Prism.languages.ssml = Prism.languages.xml;
1652
- Prism.languages.atom = Prism.languages.xml;
1653
- Prism.languages.rss = Prism.languages.xml;
1654
- (function (Prism) {
1655
- var comment = /\/\*[\s\S]*?\*\/|\/\/.*|#(?!\[).*/;
1656
- var constant = [
1657
- {
1658
- pattern: /\b(?:false|true)\b/i,
1659
- alias: 'boolean'
1660
- },
1661
- {
1662
- pattern: /(::\s*)\b[a-z_]\w*\b(?!\s*\()/i,
1663
- greedy: true,
1664
- lookbehind: true
1665
- },
1666
- {
1667
- pattern: /(\b(?:case|const)\s+)\b[a-z_]\w*(?=\s*[;=])/i,
1668
- greedy: true,
1669
- lookbehind: true
1670
- },
1671
- /\b(?:null)\b/i,
1672
- /\b[A-Z_][A-Z0-9_]*\b(?!\s*\()/
1673
- ];
1674
- var number = /\b0b[01]+(?:_[01]+)*\b|\b0o[0-7]+(?:_[0-7]+)*\b|\b0x[\da-f]+(?:_[\da-f]+)*\b|(?:\b\d+(?:_\d+)*\.?(?:\d+(?:_\d+)*)?|\B\.\d+)(?:e[+-]?\d+)?/i;
1675
- var operator = /<?=>|\?\?=?|\.{3}|\??->|[!=]=?=?|::|\*\*=?|--|\+\+|&&|\|\||<<|>>|[?~]|[/^|%*&<>.+-]=?/;
1676
- var punctuation = /[{}\[\](),:;]/;
1677
- Prism.languages.php = {
1678
- 'delimiter': {
1679
- pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i,
1680
- alias: 'important'
1681
- },
1682
- 'comment': comment,
1683
- 'variable': /\$+(?:\w+\b|(?=\{))/,
1684
- 'package': {
1685
- pattern: /(namespace\s+|use\s+(?:function\s+)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,
1686
- lookbehind: true,
1687
- inside: { 'punctuation': /\\/ }
1688
- },
1689
- 'class-name-definition': {
1690
- pattern: /(\b(?:class|enum|interface|trait)\s+)\b[a-z_]\w*(?!\\)\b/i,
1691
- lookbehind: true,
1692
- alias: 'class-name'
1693
- },
1694
- 'function-definition': {
1695
- pattern: /(\bfunction\s+)[a-z_]\w*(?=\s*\()/i,
1696
- lookbehind: true,
1697
- alias: 'function'
1698
- },
1699
- 'keyword': [
1700
- {
1701
- pattern: /(\(\s*)\b(?:array|bool|boolean|float|int|integer|object|string)\b(?=\s*\))/i,
1702
- alias: 'type-casting',
1703
- greedy: true,
1704
- lookbehind: true
1705
- },
1706
- {
1707
- pattern: /([(,?]\s*)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|object|self|static|string)\b(?=\s*\$)/i,
1708
- alias: 'type-hint',
1709
- greedy: true,
1710
- lookbehind: true
1711
- },
1712
- {
1713
- pattern: /(\)\s*:\s*(?:\?\s*)?)\b(?:array(?!\s*\()|bool|callable|(?:false|null)(?=\s*\|)|float|int|iterable|mixed|never|object|self|static|string|void)\b/i,
1714
- alias: 'return-type',
1715
- greedy: true,
1716
- lookbehind: true
1717
- },
1718
- {
1719
- pattern: /\b(?:array(?!\s*\()|bool|float|int|iterable|mixed|object|string|void)\b/i,
1720
- alias: 'type-declaration',
1721
- greedy: true
1722
- },
1723
- {
1724
- pattern: /(\|\s*)(?:false|null)\b|\b(?:false|null)(?=\s*\|)/i,
1725
- alias: 'type-declaration',
1726
- greedy: true,
1727
- lookbehind: true
1728
- },
1729
- {
1730
- pattern: /\b(?:parent|self|static)(?=\s*::)/i,
1731
- alias: 'static-context',
1732
- greedy: true
1733
- },
1734
- {
1735
- pattern: /(\byield\s+)from\b/i,
1736
- lookbehind: true
1737
- },
1738
- /\bclass\b/i,
1739
- {
1740
- pattern: /((?:^|[^\s>:]|(?:^|[^-])>|(?:^|[^:]):)\s*)\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\b/i,
1741
- lookbehind: true
1742
- }
1743
- ],
1744
- 'argument-name': {
1745
- pattern: /([(,]\s*)\b[a-z_]\w*(?=\s*:(?!:))/i,
1746
- lookbehind: true
1747
- },
1748
- 'class-name': [
1749
- {
1750
- pattern: /(\b(?:extends|implements|instanceof|new(?!\s+self|\s+static))\s+|\bcatch\s*\()\b[a-z_]\w*(?!\\)\b/i,
1751
- greedy: true,
1752
- lookbehind: true
1753
- },
1754
- {
1755
- pattern: /(\|\s*)\b[a-z_]\w*(?!\\)\b/i,
1756
- greedy: true,
1757
- lookbehind: true
1758
- },
1759
- {
1760
- pattern: /\b[a-z_]\w*(?!\\)\b(?=\s*\|)/i,
1761
- greedy: true
1762
- },
1763
- {
1764
- pattern: /(\|\s*)(?:\\?\b[a-z_]\w*)+\b/i,
1765
- alias: 'class-name-fully-qualified',
1766
- greedy: true,
1767
- lookbehind: true,
1768
- inside: { 'punctuation': /\\/ }
1769
- },
1770
- {
1771
- pattern: /(?:\\?\b[a-z_]\w*)+\b(?=\s*\|)/i,
1772
- alias: 'class-name-fully-qualified',
1773
- greedy: true,
1774
- inside: { 'punctuation': /\\/ }
1775
- },
1776
- {
1777
- pattern: /(\b(?:extends|implements|instanceof|new(?!\s+self\b|\s+static\b))\s+|\bcatch\s*\()(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,
1778
- alias: 'class-name-fully-qualified',
1779
- greedy: true,
1780
- lookbehind: true,
1781
- inside: { 'punctuation': /\\/ }
1782
- },
1783
- {
1784
- pattern: /\b[a-z_]\w*(?=\s*\$)/i,
1785
- alias: 'type-declaration',
1786
- greedy: true
1787
- },
1788
- {
1789
- pattern: /(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,
1790
- alias: [
1791
- 'class-name-fully-qualified',
1792
- 'type-declaration'
1793
- ],
1794
- greedy: true,
1795
- inside: { 'punctuation': /\\/ }
1796
- },
1797
- {
1798
- pattern: /\b[a-z_]\w*(?=\s*::)/i,
1799
- alias: 'static-context',
1800
- greedy: true
1801
- },
1802
- {
1803
- pattern: /(?:\\?\b[a-z_]\w*)+(?=\s*::)/i,
1804
- alias: [
1805
- 'class-name-fully-qualified',
1806
- 'static-context'
1807
- ],
1808
- greedy: true,
1809
- inside: { 'punctuation': /\\/ }
1810
- },
1811
- {
1812
- pattern: /([(,?]\s*)[a-z_]\w*(?=\s*\$)/i,
1813
- alias: 'type-hint',
1814
- greedy: true,
1815
- lookbehind: true
1816
- },
1817
- {
1818
- pattern: /([(,?]\s*)(?:\\?\b[a-z_]\w*)+(?=\s*\$)/i,
1819
- alias: [
1820
- 'class-name-fully-qualified',
1821
- 'type-hint'
1822
- ],
1823
- greedy: true,
1824
- lookbehind: true,
1825
- inside: { 'punctuation': /\\/ }
1826
- },
1827
- {
1828
- pattern: /(\)\s*:\s*(?:\?\s*)?)\b[a-z_]\w*(?!\\)\b/i,
1829
- alias: 'return-type',
1830
- greedy: true,
1831
- lookbehind: true
1832
- },
1833
- {
1834
- pattern: /(\)\s*:\s*(?:\?\s*)?)(?:\\?\b[a-z_]\w*)+\b(?!\\)/i,
1835
- alias: [
1836
- 'class-name-fully-qualified',
1837
- 'return-type'
1838
- ],
1839
- greedy: true,
1840
- lookbehind: true,
1841
- inside: { 'punctuation': /\\/ }
1842
- }
1843
- ],
1844
- 'constant': constant,
1845
- 'function': {
1846
- pattern: /(^|[^\\\w])\\?[a-z_](?:[\w\\]*\w)?(?=\s*\()/i,
1847
- lookbehind: true,
1848
- inside: { 'punctuation': /\\/ }
1849
- },
1850
- 'property': {
1851
- pattern: /(->\s*)\w+/,
1852
- lookbehind: true
1853
- },
1854
- 'number': number,
1855
- 'operator': operator,
1856
- 'punctuation': punctuation
1857
- };
1858
- var string_interpolation = {
1859
- pattern: /\{\$(?:\{(?:\{[^{}]+\}|[^{}]+)\}|[^{}])+\}|(^|[^\\{])\$+(?:\w+(?:\[[^\r\n\[\]]+\]|->\w+)?)/,
1860
- lookbehind: true,
1861
- inside: Prism.languages.php
1862
- };
1863
- var string = [
1864
- {
1865
- pattern: /<<<'([^']+)'[\r\n](?:.*[\r\n])*?\1;/,
1866
- alias: 'nowdoc-string',
1867
- greedy: true,
1868
- inside: {
1869
- 'delimiter': {
1870
- pattern: /^<<<'[^']+'|[a-z_]\w*;$/i,
1871
- alias: 'symbol',
1872
- inside: { 'punctuation': /^<<<'?|[';]$/ }
1873
- }
1874
- }
1875
- },
1876
- {
1877
- pattern: /<<<(?:"([^"]+)"[\r\n](?:.*[\r\n])*?\1;|([a-z_]\w*)[\r\n](?:.*[\r\n])*?\2;)/i,
1878
- alias: 'heredoc-string',
1879
- greedy: true,
1880
- inside: {
1881
- 'delimiter': {
1882
- pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i,
1883
- alias: 'symbol',
1884
- inside: { 'punctuation': /^<<<"?|[";]$/ }
1885
- },
1886
- 'interpolation': string_interpolation
1887
- }
1888
- },
1889
- {
1890
- pattern: /`(?:\\[\s\S]|[^\\`])*`/,
1891
- alias: 'backtick-quoted-string',
1892
- greedy: true
1893
- },
1894
- {
1895
- pattern: /'(?:\\[\s\S]|[^\\'])*'/,
1896
- alias: 'single-quoted-string',
1897
- greedy: true
1898
- },
1899
- {
1900
- pattern: /"(?:\\[\s\S]|[^\\"])*"/,
1901
- alias: 'double-quoted-string',
1902
- greedy: true,
1903
- inside: { 'interpolation': string_interpolation }
1904
- }
1905
- ];
1906
- Prism.languages.insertBefore('php', 'variable', {
1907
- 'string': string,
1908
- 'attribute': {
1909
- pattern: /#\[(?:[^"'\/#]|\/(?![*/])|\/\/.*$|#(?!\[).*$|\/\*(?:[^*]|\*(?!\/))*\*\/|"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*')+\](?=\s*[a-z$#])/im,
1910
- greedy: true,
1911
- inside: {
1912
- 'attribute-content': {
1913
- pattern: /^(#\[)[\s\S]+(?=\]$)/,
1914
- lookbehind: true,
1915
- inside: {
1916
- 'comment': comment,
1917
- 'string': string,
1918
- 'attribute-class-name': [
1919
- {
1920
- pattern: /([^:]|^)\b[a-z_]\w*(?!\\)\b/i,
1921
- alias: 'class-name',
1922
- greedy: true,
1923
- lookbehind: true
1924
- },
1925
- {
1926
- pattern: /([^:]|^)(?:\\?\b[a-z_]\w*)+/i,
1927
- alias: [
1928
- 'class-name',
1929
- 'class-name-fully-qualified'
1930
- ],
1931
- greedy: true,
1932
- lookbehind: true,
1933
- inside: { 'punctuation': /\\/ }
1934
- }
1935
- ],
1936
- 'constant': constant,
1937
- 'number': number,
1938
- 'operator': operator,
1939
- 'punctuation': punctuation
1940
- }
1941
- },
1942
- 'delimiter': {
1943
- pattern: /^#\[|\]$/,
1944
- alias: 'punctuation'
1945
- }
1946
- }
1947
- }
1948
- });
1949
- Prism.hooks.add('before-tokenize', function (env) {
1950
- if (!/<\?/.test(env.code)) {
1951
- return;
1952
- }
1953
- var phpPattern = /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#(?!\[))(?:[^?\n\r]|\?(?!>))*(?=$|\?>|[\r\n])|#\[|\/\*(?:[^*]|\*(?!\/))*(?:\*\/|$))*?(?:\?>|$)/g;
1954
- Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);
1955
- });
1956
- Prism.hooks.add('after-tokenize', function (env) {
1957
- Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');
1958
- });
1959
- }(Prism));
1960
- Prism.languages.python = {
1961
- 'comment': {
1962
- pattern: /(^|[^\\])#.*/,
1963
- lookbehind: true,
1964
- greedy: true
1965
- },
1966
- 'string-interpolation': {
1967
- pattern: /(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,
1968
- greedy: true,
1969
- inside: {
1970
- 'interpolation': {
1971
- pattern: /((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,
1972
- lookbehind: true,
1973
- inside: {
1974
- 'format-spec': {
1975
- pattern: /(:)[^:(){}]+(?=\}$)/,
1976
- lookbehind: true
1977
- },
1978
- 'conversion-option': {
1979
- pattern: /![sra](?=[:}]$)/,
1980
- alias: 'punctuation'
1981
- },
1982
- rest: null
1983
- }
1984
- },
1985
- 'string': /[\s\S]+/
1986
- }
1987
- },
1988
- 'triple-quoted-string': {
1989
- pattern: /(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,
1990
- greedy: true,
1991
- alias: 'string'
1992
- },
1993
- 'string': {
1994
- pattern: /(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,
1995
- greedy: true
1996
- },
1997
- 'function': {
1998
- pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,
1999
- lookbehind: true
2000
- },
2001
- 'class-name': {
2002
- pattern: /(\bclass\s+)\w+/i,
2003
- lookbehind: true
2004
- },
2005
- 'decorator': {
2006
- pattern: /(^[\t ]*)@\w+(?:\.\w+)*/m,
2007
- lookbehind: true,
2008
- alias: [
2009
- 'annotation',
2010
- 'punctuation'
2011
- ],
2012
- inside: { 'punctuation': /\./ }
2013
- },
2014
- 'keyword': /\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,
2015
- 'builtin': /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,
2016
- 'boolean': /\b(?:False|None|True)\b/,
2017
- 'number': /\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,
2018
- 'operator': /[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,
2019
- 'punctuation': /[{}[\];(),.:]/
2020
- };
2021
- Prism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;
2022
- Prism.languages.py = Prism.languages.python;
2023
- (function (Prism) {
2024
- Prism.languages.ruby = Prism.languages.extend('clike', {
2025
- 'comment': {
2026
- pattern: /#.*|^=begin\s[\s\S]*?^=end/m,
2027
- greedy: true
2028
- },
2029
- 'class-name': {
2030
- pattern: /(\b(?:class|module)\s+|\bcatch\s+\()[\w.\\]+|\b[A-Z_]\w*(?=\s*\.\s*new\b)/,
2031
- lookbehind: true,
2032
- inside: { 'punctuation': /[.\\]/ }
2033
- },
2034
- 'keyword': /\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\b/,
2035
- 'operator': /\.{2,3}|&\.|===|<?=>|[!=]?~|(?:&&|\|\||<<|>>|\*\*|[+\-*/%<>!^&|=])=?|[?:]/,
2036
- 'punctuation': /[(){}[\].,;]/
2037
- });
2038
- Prism.languages.insertBefore('ruby', 'operator', {
2039
- 'double-colon': {
2040
- pattern: /::/,
2041
- alias: 'punctuation'
2042
- }
2043
- });
2044
- var interpolation = {
2045
- pattern: /((?:^|[^\\])(?:\\{2})*)#\{(?:[^{}]|\{[^{}]*\})*\}/,
2046
- lookbehind: true,
2047
- inside: {
2048
- 'content': {
2049
- pattern: /^(#\{)[\s\S]+(?=\}$)/,
2050
- lookbehind: true,
2051
- inside: Prism.languages.ruby
2052
- },
2053
- 'delimiter': {
2054
- pattern: /^#\{|\}$/,
2055
- alias: 'punctuation'
2056
- }
2057
- }
2058
- };
2059
- delete Prism.languages.ruby.function;
2060
- var percentExpression = '(?:' + [
2061
- /([^a-zA-Z0-9\s{(\[<=])(?:(?!\1)[^\\]|\\[\s\S])*\1/.source,
2062
- /\((?:[^()\\]|\\[\s\S]|\((?:[^()\\]|\\[\s\S])*\))*\)/.source,
2063
- /\{(?:[^{}\\]|\\[\s\S]|\{(?:[^{}\\]|\\[\s\S])*\})*\}/.source,
2064
- /\[(?:[^\[\]\\]|\\[\s\S]|\[(?:[^\[\]\\]|\\[\s\S])*\])*\]/.source,
2065
- /<(?:[^<>\\]|\\[\s\S]|<(?:[^<>\\]|\\[\s\S])*>)*>/.source
2066
- ].join('|') + ')';
2067
- var symbolName = /(?:"(?:\\.|[^"\\\r\n])*"|(?:\b[a-zA-Z_]\w*|[^\s\0-\x7F]+)[?!]?|\$.)/.source;
2068
- Prism.languages.insertBefore('ruby', 'keyword', {
2069
- 'regex-literal': [
2070
- {
2071
- pattern: RegExp(/%r/.source + percentExpression + /[egimnosux]{0,6}/.source),
2072
- greedy: true,
2073
- inside: {
2074
- 'interpolation': interpolation,
2075
- 'regex': /[\s\S]+/
2076
- }
2077
- },
2078
- {
2079
- pattern: /(^|[^/])\/(?!\/)(?:\[[^\r\n\]]+\]|\\.|[^[/\\\r\n])+\/[egimnosux]{0,6}(?=\s*(?:$|[\r\n,.;})#]))/,
2080
- lookbehind: true,
2081
- greedy: true,
2082
- inside: {
2083
- 'interpolation': interpolation,
2084
- 'regex': /[\s\S]+/
2085
- }
2086
- }
2087
- ],
2088
- 'variable': /[@$]+[a-zA-Z_]\w*(?:[?!]|\b)/,
2089
- 'symbol': [
2090
- {
2091
- pattern: RegExp(/(^|[^:]):/.source + symbolName),
2092
- lookbehind: true,
2093
- greedy: true
2094
- },
2095
- {
2096
- pattern: RegExp(/([\r\n{(,][ \t]*)/.source + symbolName + /(?=:(?!:))/.source),
2097
- lookbehind: true,
2098
- greedy: true
2099
- }
2100
- ],
2101
- 'method-definition': {
2102
- pattern: /(\bdef\s+)\w+(?:\s*\.\s*\w+)?/,
2103
- lookbehind: true,
2104
- inside: {
2105
- 'function': /\b\w+$/,
2106
- 'keyword': /^self\b/,
2107
- 'class-name': /^\w+/,
2108
- 'punctuation': /\./
2109
- }
2110
- }
2111
- });
2112
- Prism.languages.insertBefore('ruby', 'string', {
2113
- 'string-literal': [
2114
- {
2115
- pattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),
2116
- greedy: true,
2117
- inside: {
2118
- 'interpolation': interpolation,
2119
- 'string': /[\s\S]+/
2120
- }
2121
- },
2122
- {
2123
- pattern: /("|')(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|(?!\1)[^\\#\r\n])*\1/,
2124
- greedy: true,
2125
- inside: {
2126
- 'interpolation': interpolation,
2127
- 'string': /[\s\S]+/
2128
- }
2129
- },
2130
- {
2131
- pattern: /<<[-~]?([a-z_]\w*)[\r\n](?:.*[\r\n])*?[\t ]*\1/i,
2132
- alias: 'heredoc-string',
2133
- greedy: true,
2134
- inside: {
2135
- 'delimiter': {
2136
- pattern: /^<<[-~]?[a-z_]\w*|\b[a-z_]\w*$/i,
2137
- inside: {
2138
- 'symbol': /\b\w+/,
2139
- 'punctuation': /^<<[-~]?/
2140
- }
2141
- },
2142
- 'interpolation': interpolation,
2143
- 'string': /[\s\S]+/
2144
- }
2145
- },
2146
- {
2147
- pattern: /<<[-~]?'([a-z_]\w*)'[\r\n](?:.*[\r\n])*?[\t ]*\1/i,
2148
- alias: 'heredoc-string',
2149
- greedy: true,
2150
- inside: {
2151
- 'delimiter': {
2152
- pattern: /^<<[-~]?'[a-z_]\w*'|\b[a-z_]\w*$/i,
2153
- inside: {
2154
- 'symbol': /\b\w+/,
2155
- 'punctuation': /^<<[-~]?'|'$/
2156
- }
2157
- },
2158
- 'string': /[\s\S]+/
2159
- }
2160
- }
2161
- ],
2162
- 'command-literal': [
2163
- {
2164
- pattern: RegExp(/%x/.source + percentExpression),
2165
- greedy: true,
2166
- inside: {
2167
- 'interpolation': interpolation,
2168
- 'command': {
2169
- pattern: /[\s\S]+/,
2170
- alias: 'string'
2171
- }
2172
- }
2173
- },
2174
- {
2175
- pattern: /`(?:#\{[^}]+\}|#(?!\{)|\\(?:\r\n|[\s\S])|[^\\`#\r\n])*`/,
2176
- greedy: true,
2177
- inside: {
2178
- 'interpolation': interpolation,
2179
- 'command': {
2180
- pattern: /[\s\S]+/,
2181
- alias: 'string'
2182
- }
2183
- }
2184
- }
2185
- ]
2186
- });
2187
- delete Prism.languages.ruby.string;
2188
- Prism.languages.insertBefore('ruby', 'number', {
2189
- 'builtin': /\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\b/,
2190
- 'constant': /\b[A-Z][A-Z0-9_]*(?:[?!]|\b)/
2191
- });
2192
- Prism.languages.rb = Prism.languages.ruby;
2193
- }(Prism));
2194
- window.Prism = oldprism;
2195
- return Prism;
2196
- }(undefined, undefined);
2197
-
2198
- const option = name => editor => editor.options.get(name);
2199
- const register$2 = editor => {
2200
- const registerOption = editor.options.register;
2201
- registerOption('codesample_languages', { processor: 'object[]' });
2202
- registerOption('codesample_global_prismjs', {
2203
- processor: 'boolean',
2204
- default: false
2205
- });
2206
- };
2207
- const getLanguages$1 = option('codesample_languages');
2208
- const useGlobalPrismJS = option('codesample_global_prismjs');
2209
-
2210
- const get = editor => Global.Prism && useGlobalPrismJS(editor) ? Global.Prism : prismjs;
2211
-
2212
- const isCodeSample = elm => {
2213
- return isNonNullable(elm) && elm.nodeName === 'PRE' && elm.className.indexOf('language-') !== -1;
2214
- };
2215
-
2216
- const getSelectedCodeSample = editor => {
2217
- const node = editor.selection ? editor.selection.getNode() : null;
2218
- return isCodeSample(node) ? Optional.some(node) : Optional.none();
2219
- };
2220
- const insertCodeSample = (editor, language, code) => {
2221
- const dom = editor.dom;
2222
- editor.undoManager.transact(() => {
2223
- const node = getSelectedCodeSample(editor);
2224
- code = global$1.DOM.encode(code);
2225
- return node.fold(() => {
2226
- editor.insertContent('<pre id="__new" class="language-' + language + '">' + code + '</pre>');
2227
- const newPre = dom.select('#__new')[0];
2228
- dom.setAttrib(newPre, 'id', null);
2229
- editor.selection.select(newPre);
2230
- }, n => {
2231
- dom.setAttrib(n, 'class', 'language-' + language);
2232
- n.innerHTML = code;
2233
- get(editor).highlightElement(n);
2234
- editor.selection.select(n);
2235
- });
2236
- });
2237
- };
2238
- const getCurrentCode = editor => {
2239
- const node = getSelectedCodeSample(editor);
2240
- return node.bind(n => Optional.from(n.textContent)).getOr('');
2241
- };
2242
-
2243
- const getLanguages = editor => {
2244
- const defaultLanguages = [
2245
- {
2246
- text: 'HTML/XML',
2247
- value: 'markup'
2248
- },
2249
- {
2250
- text: 'JavaScript',
2251
- value: 'javascript'
2252
- },
2253
- {
2254
- text: 'CSS',
2255
- value: 'css'
2256
- },
2257
- {
2258
- text: 'PHP',
2259
- value: 'php'
2260
- },
2261
- {
2262
- text: 'Ruby',
2263
- value: 'ruby'
2264
- },
2265
- {
2266
- text: 'Python',
2267
- value: 'python'
2268
- },
2269
- {
2270
- text: 'Java',
2271
- value: 'java'
2272
- },
2273
- {
2274
- text: 'C',
2275
- value: 'c'
2276
- },
2277
- {
2278
- text: 'C#',
2279
- value: 'csharp'
2280
- },
2281
- {
2282
- text: 'C++',
2283
- value: 'cpp'
2284
- }
2285
- ];
2286
- const customLanguages = getLanguages$1(editor);
2287
- return customLanguages ? customLanguages : defaultLanguages;
2288
- };
2289
- const getCurrentLanguage = (editor, fallback) => {
2290
- const node = getSelectedCodeSample(editor);
2291
- return node.fold(() => fallback, n => {
2292
- const matches = n.className.match(/language-(\w+)/);
2293
- return matches ? matches[1] : fallback;
2294
- });
2295
- };
2296
-
2297
- const open = editor => {
2298
- const languages = getLanguages(editor);
2299
- const defaultLanguage = head(languages).fold(constant(''), l => l.value);
2300
- const currentLanguage = getCurrentLanguage(editor, defaultLanguage);
2301
- const currentCode = getCurrentCode(editor);
2302
- editor.windowManager.open({
2303
- title: 'Insert/Edit Code Sample',
2304
- size: 'large',
2305
- body: {
2306
- type: 'panel',
2307
- items: [
2308
- {
2309
- type: 'listbox',
2310
- name: 'language',
2311
- label: 'Language',
2312
- items: languages
2313
- },
2314
- {
2315
- type: 'textarea',
2316
- name: 'code',
2317
- label: 'Code view'
2318
- }
2319
- ]
2320
- },
2321
- buttons: [
2322
- {
2323
- type: 'cancel',
2324
- name: 'cancel',
2325
- text: 'Cancel'
2326
- },
2327
- {
2328
- type: 'submit',
2329
- name: 'save',
2330
- text: 'Save',
2331
- primary: true
2332
- }
2333
- ],
2334
- initialData: {
2335
- language: currentLanguage,
2336
- code: currentCode
2337
- },
2338
- onSubmit: api => {
2339
- const data = api.getData();
2340
- insertCodeSample(editor, data.language, data.code);
2341
- api.close();
2342
- }
2343
- });
2344
- };
2345
-
2346
- const register$1 = editor => {
2347
- editor.addCommand('codesample', () => {
2348
- const node = editor.selection.getNode();
2349
- if (editor.selection.isCollapsed() || isCodeSample(node)) {
2350
- open(editor);
2351
- } else {
2352
- editor.formatter.toggle('code');
2353
- }
2354
- });
2355
- };
2356
-
2357
- const blank = r => s => s.replace(r, '');
2358
- const trim = blank(/^\s+|\s+$/g);
2359
-
2360
- var global = tinymce.util.Tools.resolve('tinymce.util.Tools');
2361
-
2362
- const setup = editor => {
2363
- editor.on('PreProcess', e => {
2364
- const dom = editor.dom;
2365
- const pres = dom.select('pre[contenteditable=false]', e.node);
2366
- global.each(global.grep(pres, isCodeSample), elm => {
2367
- const code = elm.textContent;
2368
- dom.setAttrib(elm, 'class', trim(dom.getAttrib(elm, 'class')));
2369
- dom.setAttrib(elm, 'contentEditable', null);
2370
- dom.setAttrib(elm, 'data-mce-highlighted', null);
2371
- let child;
2372
- while (child = elm.firstChild) {
2373
- elm.removeChild(child);
2374
- }
2375
- const codeElm = dom.add(elm, 'code');
2376
- codeElm.textContent = code;
2377
- });
2378
- });
2379
- editor.on('SetContent', () => {
2380
- const dom = editor.dom;
2381
- const unprocessedCodeSamples = global.grep(dom.select('pre'), elm => {
2382
- return isCodeSample(elm) && dom.getAttrib(elm, 'data-mce-highlighted') !== 'true';
2383
- });
2384
- if (unprocessedCodeSamples.length) {
2385
- editor.undoManager.transact(() => {
2386
- global.each(unprocessedCodeSamples, elm => {
2387
- var _a;
2388
- global.each(dom.select('br', elm), elm => {
2389
- dom.replace(editor.getDoc().createTextNode('\n'), elm);
2390
- });
2391
- elm.innerHTML = dom.encode((_a = elm.textContent) !== null && _a !== void 0 ? _a : '');
2392
- get(editor).highlightElement(elm);
2393
- dom.setAttrib(elm, 'data-mce-highlighted', true);
2394
- elm.className = trim(elm.className);
2395
- });
2396
- });
2397
- }
2398
- });
2399
- editor.on('PreInit', () => {
2400
- editor.parser.addNodeFilter('pre', nodes => {
2401
- var _a;
2402
- for (let i = 0, l = nodes.length; i < l; i++) {
2403
- const node = nodes[i];
2404
- const isCodeSample = ((_a = node.attr('class')) !== null && _a !== void 0 ? _a : '').indexOf('language-') !== -1;
2405
- if (isCodeSample) {
2406
- node.attr('contenteditable', 'false');
2407
- node.attr('data-mce-highlighted', 'false');
2408
- }
2409
- }
2410
- });
2411
- });
2412
- };
2413
-
2414
- const onSetupEditable = (editor, onChanged = noop) => api => {
2415
- const nodeChanged = () => {
2416
- api.setEnabled(editor.selection.isEditable());
2417
- onChanged(api);
2418
- };
2419
- editor.on('NodeChange', nodeChanged);
2420
- nodeChanged();
2421
- return () => {
2422
- editor.off('NodeChange', nodeChanged);
2423
- };
2424
- };
2425
- const isCodeSampleSelection = editor => {
2426
- const node = editor.selection.getStart();
2427
- return editor.dom.is(node, 'pre[class*="language-"]');
2428
- };
2429
- const register = editor => {
2430
- const onAction = () => editor.execCommand('codesample');
2431
- editor.ui.registry.addToggleButton('codesample', {
2432
- icon: 'code-sample',
2433
- tooltip: 'Insert/edit code sample',
2434
- onAction,
2435
- onSetup: onSetupEditable(editor, api => {
2436
- api.setActive(isCodeSampleSelection(editor));
2437
- })
2438
- });
2439
- editor.ui.registry.addMenuItem('codesample', {
2440
- text: 'Code sample...',
2441
- icon: 'code-sample',
2442
- onAction,
2443
- onSetup: onSetupEditable(editor)
2444
- });
2445
- };
2446
-
2447
- var Plugin = () => {
2448
- global$2.add('codesample', editor => {
2449
- register$2(editor);
2450
- setup(editor);
2451
- register(editor);
2452
- register$1(editor);
2453
- editor.on('dblclick', ev => {
2454
- if (isCodeSample(ev.target)) {
2455
- open(editor);
2456
- }
2457
- });
2458
- });
2459
- };
2460
-
2461
- Plugin();
2462
-
2463
- })();