module.exports = function(hljs) { var NIX_KEYWORDS = { keyword: 'rec with let in inherit assert if else then', constant: 'true false or and null', built_in: 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation' }; var ANTIQUOTE = { className: 'subst', begin: /\$\{/, end: /}/, keywords: NIX_KEYWORDS }; var ATTRS = { className: 'variable', // TODO: we have to figure out a way how to exclude \s*= begin: /[a-zA-Z0-9-_]+(\s*=)/, relevance: 0 }; var SINGLE_QUOTE = { className: 'string', begin: "''", end: "''", contains: [ ANTIQUOTE ] }; var DOUBLE_QUOTE = { className: 'string', begin: '"', end: '"', contains: [ ANTIQUOTE ] }; var EXPRESSIONS = [ hljs.NUMBER_MODE, hljs.HASH_COMMENT_MODE, hljs.C_BLOCK_COMMENT_MODE, SINGLE_QUOTE, DOUBLE_QUOTE, ATTRS ]; ANTIQUOTE.contains = EXPRESSIONS; return { aliases: ["nixos"], keywords: NIX_KEYWORDS, contains: EXPRESSIONS }; };