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
| module.exports = function(hljs) {
| var LITERALS = {literal: 'true false null'};
| var ALLOWED_COMMENTS = [
| hljs.C_LINE_COMMENT_MODE,
| hljs.C_BLOCK_COMMENT_MODE
| ]
| var TYPES = [
| hljs.QUOTE_STRING_MODE,
| hljs.C_NUMBER_MODE
| ];
| var VALUE_CONTAINER = {
| end: ',', endsWithParent: true, excludeEnd: true,
| contains: TYPES,
| keywords: LITERALS
| };
| var OBJECT = {
| begin: '{', end: '}',
| contains: [
| {
| className: 'attr',
| begin: /"/, end: /"/,
| contains: [hljs.BACKSLASH_ESCAPE],
| illegal: '\\n',
| },
| hljs.inherit(VALUE_CONTAINER, {begin: /:/})
| ].concat(ALLOWED_COMMENTS),
| illegal: '\\S'
| };
| var ARRAY = {
| begin: '\\[', end: '\\]',
| contains: [hljs.inherit(VALUE_CONTAINER)], // inherit is a workaround for a bug that makes shared modes with endsWithParent compile only the ending of one of the parents
| illegal: '\\S'
| };
| TYPES.push(OBJECT, ARRAY);
| ALLOWED_COMMENTS.forEach(function(rule) {
| TYPES.push(rule)
| })
| return {
| contains: TYPES,
| keywords: LITERALS,
| illegal: '\\S'
| };
| };
|
|