66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
Language: Nix
 | 
						|
Author: Domen Kožar <domen@dev.si>
 | 
						|
Description: Nix functional language
 | 
						|
Website: http://nixos.org/nix
 | 
						|
*/
 | 
						|
 | 
						|
function nix(hljs) {
 | 
						|
  const NIX_KEYWORDS = {
 | 
						|
    keyword:
 | 
						|
      'rec with let in inherit assert if else then',
 | 
						|
    literal:
 | 
						|
      'true false or and null',
 | 
						|
    built_in:
 | 
						|
      'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +
 | 
						|
      'toString derivation'
 | 
						|
  };
 | 
						|
  const ANTIQUOTE = {
 | 
						|
    className: 'subst',
 | 
						|
    begin: /\$\{/,
 | 
						|
    end: /\}/,
 | 
						|
    keywords: NIX_KEYWORDS
 | 
						|
  };
 | 
						|
  const ATTRS = {
 | 
						|
    begin: /[a-zA-Z0-9-_]+(\s*=)/,
 | 
						|
    returnBegin: true,
 | 
						|
    relevance: 0,
 | 
						|
    contains: [
 | 
						|
      {
 | 
						|
        className: 'attr',
 | 
						|
        begin: /\S+/
 | 
						|
      }
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  const STRING = {
 | 
						|
    className: 'string',
 | 
						|
    contains: [ ANTIQUOTE ],
 | 
						|
    variants: [
 | 
						|
      {
 | 
						|
        begin: "''",
 | 
						|
        end: "''"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        begin: '"',
 | 
						|
        end: '"'
 | 
						|
      }
 | 
						|
    ]
 | 
						|
  };
 | 
						|
  const EXPRESSIONS = [
 | 
						|
    hljs.NUMBER_MODE,
 | 
						|
    hljs.HASH_COMMENT_MODE,
 | 
						|
    hljs.C_BLOCK_COMMENT_MODE,
 | 
						|
    STRING,
 | 
						|
    ATTRS
 | 
						|
  ];
 | 
						|
  ANTIQUOTE.contains = EXPRESSIONS;
 | 
						|
  return {
 | 
						|
    name: 'Nix',
 | 
						|
    aliases: [ "nixos" ],
 | 
						|
    keywords: NIX_KEYWORDS,
 | 
						|
    contains: EXPRESSIONS
 | 
						|
  };
 | 
						|
}
 | 
						|
 | 
						|
module.exports = nix;
 |