| 123456789101112131415161718192021222324252627282930313233343536373839404142 | /*Language: JSONAuthor: Ivan Sagalaev <[email protected]>Category: common, protocols*/function(hljs) {  var LITERALS = {literal: 'true false null'};  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: /:/})    ],    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.splice(TYPES.length, 0, OBJECT, ARRAY);  return {    contains: TYPES,    keywords: LITERALS,    illegal: '\\S'  };}
 |