nix.js 1.1 KB

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