| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | 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'  };};
 |