pony.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. Language: Pony
  3. Author: Joe Eli McIlvain <[email protected]>
  4. Description: Pony is an open-source, object-oriented, actor-model,
  5. capabilities-secure, high performance programming language.
  6. */
  7. function(hljs) {
  8. var KEYWORDS = {
  9. keyword:
  10. 'actor addressof and as be break class compile_error compile_intrinsic' +
  11. 'consume continue delegate digestof do else elseif embed end error' +
  12. 'for fun if ifdef in interface is isnt lambda let match new not object' +
  13. 'or primitive recover repeat return struct then trait try type until ' +
  14. 'use var where while with xor',
  15. meta:
  16. 'iso val tag trn box ref',
  17. literal:
  18. 'this false true'
  19. };
  20. var TRIPLE_QUOTE_STRING_MODE = {
  21. className: 'string',
  22. begin: '"""', end: '"""',
  23. relevance: 10
  24. };
  25. var QUOTE_STRING_MODE = {
  26. className: 'string',
  27. begin: '"', end: '"',
  28. contains: [hljs.BACKSLASH_ESCAPE]
  29. };
  30. var SINGLE_QUOTE_CHAR_MODE = {
  31. className: 'string',
  32. begin: '\'', end: '\'',
  33. contains: [hljs.BACKSLASH_ESCAPE],
  34. relevance: 0
  35. };
  36. var TYPE_NAME = {
  37. className: 'type',
  38. begin: '\\b_?[A-Z][\\w]*',
  39. relevance: 0
  40. };
  41. var PRIMED_NAME = {
  42. begin: hljs.IDENT_RE + '\'', relevance: 0
  43. };
  44. var CLASS = {
  45. className: 'class',
  46. beginKeywords: 'class actor', end: '$',
  47. contains: [
  48. hljs.TITLE_MODE,
  49. hljs.C_LINE_COMMENT_MODE
  50. ]
  51. }
  52. var FUNCTION = {
  53. className: 'function',
  54. beginKeywords: 'new fun', end: '=>',
  55. contains: [
  56. hljs.TITLE_MODE,
  57. {
  58. begin: /\(/, end: /\)/,
  59. contains: [
  60. TYPE_NAME,
  61. PRIMED_NAME,
  62. hljs.C_NUMBER_MODE,
  63. hljs.C_BLOCK_COMMENT_MODE
  64. ]
  65. },
  66. {
  67. begin: /:/, endsWithParent: true,
  68. contains: [TYPE_NAME]
  69. },
  70. hljs.C_LINE_COMMENT_MODE
  71. ]
  72. }
  73. return {
  74. keywords: KEYWORDS,
  75. contains: [
  76. CLASS,
  77. FUNCTION,
  78. TYPE_NAME,
  79. TRIPLE_QUOTE_STRING_MODE,
  80. QUOTE_STRING_MODE,
  81. SINGLE_QUOTE_CHAR_MODE,
  82. PRIMED_NAME,
  83. hljs.C_NUMBER_MODE,
  84. hljs.C_LINE_COMMENT_MODE,
  85. hljs.C_BLOCK_COMMENT_MODE
  86. ]
  87. };
  88. }