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.
65 lines
1.2 KiB
65 lines
1.2 KiB
/* |
|
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;
|
|
|