You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/* Language: JSON Description: JSON (JavaScript Object Notation) is a lightweight data-interchange format. Author: Ivan Sagalaev <maniac@softwaremaniacs.org> Website: http://www.json.org
Category: common, protocols */
function json(hljs) { const LITERALS = { literal: 'true false null' }; const ALLOWED_COMMENTS = [ hljs.C_LINE_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE ]; const TYPES = [ hljs.QUOTE_STRING_MODE, hljs.C_NUMBER_MODE ]; const VALUE_CONTAINER = { end: ',', endsWithParent: true, excludeEnd: true, contains: TYPES, keywords: LITERALS }; const OBJECT = { begin: /\{/, end: /\}/, contains: [ { className: 'attr', begin: /"/, end: /"/, contains: [hljs.BACKSLASH_ESCAPE], illegal: '\\n' }, hljs.inherit(VALUE_CONTAINER, { begin: /:/ }) ].concat(ALLOWED_COMMENTS), illegal: '\\S' }; const 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 { name: 'JSON', contains: TYPES, keywords: LITERALS, illegal: '\\S' }; }
module.exports = json;
|