UNPKG

1.35 kBJavaScriptView Raw
1Prism.languages.markup = {
2 'comment': /<!--[\s\S]*?-->/,
3 'prolog': /<\?[\s\S]+?\?>/,
4 'doctype': /<!DOCTYPE[\s\S]+?>/i,
5 'cdata': /<!\[CDATA\[[\s\S]*?]]>/i,
6 'tag': {
7 pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+))?)*\s*\/?>/i,
8 greedy: true,
9 inside: {
10 'tag': {
11 pattern: /^<\/?[^\s>\/]+/i,
12 inside: {
13 'punctuation': /^<\/?/,
14 'namespace': /^[^\s>\/:]+:/
15 }
16 },
17 'attr-value': {
18 pattern: /=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">=]+)/i,
19 inside: {
20 'punctuation': [
21 /^=/,
22 {
23 pattern: /(^|[^\\])["']/,
24 lookbehind: true
25 }
26 ]
27 }
28 },
29 'punctuation': /\/?>/,
30 'attr-name': {
31 pattern: /[^\s>\/]+/,
32 inside: {
33 'namespace': /^[^\s>\/:]+:/
34 }
35 }
36
37 }
38 },
39 'entity': /&#?[\da-z]{1,8};/i
40};
41
42Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =
43 Prism.languages.markup['entity'];
44
45// Plugin to make entity title show the real entity, idea by Roman Komarov
46Prism.hooks.add('wrap', function(env) {
47
48 if (env.type === 'entity') {
49 env.attributes['title'] = env.content.replace(/&amp;/, '&');
50 }
51});
52
53Prism.languages.xml = Prism.languages.markup;
54Prism.languages.html = Prism.languages.markup;
55Prism.languages.mathml = Prism.languages.markup;
56Prism.languages.svg = Prism.languages.markup;