cal.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. Language: C/AL
  3. Author: Kenneth Fuglsang Christensen <[email protected]>
  4. Description: Provides highlighting of Microsoft Dynamics NAV C/AL code files
  5. */
  6. function(hljs) {
  7. var KEYWORDS =
  8. 'div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to ' +
  9. 'until while with var';
  10. var LITERALS = 'false true';
  11. var COMMENT_MODES = [
  12. hljs.C_LINE_COMMENT_MODE,
  13. hljs.COMMENT(
  14. /\{/,
  15. /\}/,
  16. {
  17. relevance: 0
  18. }
  19. ),
  20. hljs.COMMENT(
  21. /\(\*/,
  22. /\*\)/,
  23. {
  24. relevance: 10
  25. }
  26. )
  27. ];
  28. var STRING = {
  29. className: 'string',
  30. begin: /'/, end: /'/,
  31. contains: [{begin: /''/}]
  32. };
  33. var CHAR_STRING = {
  34. className: 'string', begin: /(#\d+)+/
  35. };
  36. var DATE = {
  37. className: 'number',
  38. begin: '\\b\\d+(\\.\\d+)?(DT|D|T)',
  39. relevance: 0
  40. };
  41. var DBL_QUOTED_VARIABLE = {
  42. className: 'string', // not a string technically but makes sense to be highlighted in the same style
  43. begin: '"',
  44. end: '"'
  45. };
  46. var PROCEDURE = {
  47. className: 'function',
  48. beginKeywords: 'procedure', end: /[:;]/,
  49. keywords: 'procedure|10',
  50. contains: [
  51. hljs.TITLE_MODE,
  52. {
  53. className: 'params',
  54. begin: /\(/, end: /\)/,
  55. keywords: KEYWORDS,
  56. contains: [STRING, CHAR_STRING]
  57. }
  58. ].concat(COMMENT_MODES)
  59. };
  60. var OBJECT = {
  61. className: 'class',
  62. begin: 'OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\d+) ([^\\r\\n]+)',
  63. returnBegin: true,
  64. contains: [
  65. hljs.TITLE_MODE,
  66. PROCEDURE
  67. ]
  68. };
  69. return {
  70. case_insensitive: true,
  71. keywords: { keyword: KEYWORDS, literal: LITERALS },
  72. illegal: /\/\*/,
  73. contains: [
  74. STRING, CHAR_STRING,
  75. DATE, DBL_QUOTED_VARIABLE,
  76. hljs.NUMBER_MODE,
  77. OBJECT,
  78. PROCEDURE
  79. ]
  80. };
  81. }