nix.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. Language: Nix
  3. Author: Domen Kožar <[email protected]>
  4. Description: Nix functional language. See http://nixos.org/nix
  5. */
  6. function(hljs) {
  7. var NIX_KEYWORDS = {
  8. keyword:
  9. 'rec with let in inherit assert if else then',
  10. literal:
  11. 'true false or and null',
  12. built_in:
  13. 'import abort baseNameOf dirOf isNull builtins map removeAttrs throw ' +
  14. 'toString derivation'
  15. };
  16. var ANTIQUOTE = {
  17. className: 'subst',
  18. begin: /\$\{/,
  19. end: /}/,
  20. keywords: NIX_KEYWORDS
  21. };
  22. var ATTRS = {
  23. begin: /[a-zA-Z0-9-_]+(\s*=)/, returnBegin: true,
  24. relevance: 0,
  25. contains: [
  26. {
  27. className: 'attr',
  28. begin: /\S+/
  29. }
  30. ]
  31. };
  32. var STRING = {
  33. className: 'string',
  34. contains: [ANTIQUOTE],
  35. variants: [
  36. {begin: "''", end: "''"},
  37. {begin: '"', end: '"'}
  38. ]
  39. };
  40. var EXPRESSIONS = [
  41. hljs.NUMBER_MODE,
  42. hljs.HASH_COMMENT_MODE,
  43. hljs.C_BLOCK_COMMENT_MODE,
  44. STRING,
  45. ATTRS
  46. ];
  47. ANTIQUOTE.contains = EXPRESSIONS;
  48. return {
  49. aliases: ["nixos"],
  50. keywords: NIX_KEYWORDS,
  51. contains: EXPRESSIONS
  52. };
  53. }