1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
| module.exports = function(hljs) {
| var XML_IDENT_RE = '[A-Za-z0-9\\._:-]+';
| var TAG_INTERNALS = {
| endsWithParent: true,
| illegal: /</,
| relevance: 0,
| contains: [
| {
| className: 'attr',
| begin: XML_IDENT_RE,
| relevance: 0
| },
| {
| begin: /=\s*/,
| relevance: 0,
| contains: [
| {
| className: 'string',
| endsParent: true,
| variants: [
| {begin: /"/, end: /"/},
| {begin: /'/, end: /'/},
| {begin: /[^\s"'=<>`]+/}
| ]
| }
| ]
| }
| ]
| };
| return {
| aliases: ['html', 'xhtml', 'rss', 'atom', 'xjb', 'xsd', 'xsl', 'plist'],
| case_insensitive: true,
| contains: [
| {
| className: 'meta',
| begin: '<!DOCTYPE', end: '>',
| relevance: 10,
| contains: [{begin: '\\[', end: '\\]'}]
| },
| hljs.COMMENT(
| '<!--',
| '-->',
| {
| relevance: 10
| }
| ),
| {
| begin: '<\\!\\[CDATA\\[', end: '\\]\\]>',
| relevance: 10
| },
| {
| className: 'meta',
| begin: /<\?xml/, end: /\?>/, relevance: 10
| },
| {
| begin: /<\?(php)?/, end: /\?>/,
| subLanguage: 'php',
| contains: [
| // We don't want the php closing tag ?> to close the PHP block when
| // inside any of the following blocks:
| {begin: '/\\*', end: '\\*/', skip: true},
| {begin: 'b"', end: '"', skip: true},
| {begin: 'b\'', end: '\'', skip: true},
| hljs.inherit(hljs.APOS_STRING_MODE, {illegal: null, className: null, contains: null, skip: true}),
| hljs.inherit(hljs.QUOTE_STRING_MODE, {illegal: null, className: null, contains: null, skip: true})
| ]
| },
| {
| className: 'tag',
| /*
| The lookahead pattern (?=...) ensures that 'begin' only matches
| '<style' as a single word, followed by a whitespace or an
| ending braket. The '$' is needed for the lexeme to be recognized
| by hljs.subMode() that tests lexemes outside the stream.
| */
| begin: '<style(?=\\s|>|$)', end: '>',
| keywords: {name: 'style'},
| contains: [TAG_INTERNALS],
| starts: {
| end: '</style>', returnEnd: true,
| subLanguage: ['css', 'xml']
| }
| },
| {
| className: 'tag',
| // See the comment in the <style tag about the lookahead pattern
| begin: '<script(?=\\s|>|$)', end: '>',
| keywords: {name: 'script'},
| contains: [TAG_INTERNALS],
| starts: {
| end: '\<\/script\>', returnEnd: true,
| subLanguage: ['actionscript', 'javascript', 'handlebars', 'xml']
| }
| },
| {
| className: 'tag',
| begin: '</?', end: '/?>',
| contains: [
| {
| className: 'name', begin: /[^\/><\s]+/, relevance: 0
| },
| TAG_INTERNALS
| ]
| }
| ]
| };
| };
|
|