/samples/scalate-presentation/src/highlight/languages/lua.js

http://github.com/scalate/scalate · JavaScript · 81 lines · 71 code · 1 blank · 9 comment · 0 complexity · 0b7482ff5409611b26a1034b5c089895 MD5 · raw file

  1. /*
  2. Language: Lua
  3. Author: Andrew Fedorov <dmmdrs@mail.ru>
  4. */
  5. hljs.LANGUAGES.lua = function(){
  6. var OPENING_LONG_BRACKET = '\\[=*\\[', CLOSING_LONG_BRACKET = '\\]=*\\]';
  7. return {
  8. defaultMode: {
  9. lexems: [hljs.UNDERSCORE_IDENT_RE],
  10. keywords: {
  11. 'keyword': {
  12. 'and': 1, 'break': 1, 'do': 1, 'else': 1, 'elseif': 1, 'end': 1,
  13. 'false': 1, 'for': 1, 'if': 1, 'in': 1, 'local': 1, 'nil': 1,
  14. 'not': 1, 'or': 1, 'repeat': 1, 'return': 1, 'then': 1, 'true': 1,
  15. 'until': 1, 'while': 1
  16. },
  17. 'built_in': {
  18. '_G': 1, '_VERSION': 1, 'assert': 1, 'collectgarbage': 1, 'dofile': 1,
  19. 'error': 1, 'getfenv': 1, 'getmetatable': 1, 'ipairs': 1, 'load': 1,
  20. 'loadfile': 1, 'loadstring': 1, 'module': 1, 'next': 1, 'pairs': 1,
  21. 'pcall': 1, 'print': 1, 'rawequal': 1, 'rawget': 1, 'rawset': 1,
  22. 'require': 1, 'select': 1, 'setfenv': 1, 'setmetatable': 1,
  23. 'tonumber': 1, 'tostring': 1, 'type': 1, 'unpack': 1, 'xpcall': 1,
  24. 'coroutine': 1, 'debug': 1, 'io': 1, 'math': 1, 'os': 1, 'package': 1,
  25. 'string': 1, 'table': 1
  26. }
  27. },
  28. contains: ['comment', 'function', 'number', 'string']
  29. },
  30. modes: [
  31. // comment
  32. {
  33. className: 'comment',
  34. begin: '--(?!' + OPENING_LONG_BRACKET + ')', end: '$'
  35. },
  36. {
  37. className: 'comment',
  38. begin: '--' + OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,
  39. contains: ['long_brackets'],
  40. relevance: 10
  41. },
  42. // long_brackets
  43. {
  44. className: 'long_brackets',
  45. begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,
  46. contains: ['long_brackets'],
  47. noMarkup: true
  48. },
  49. // function
  50. {
  51. className: 'function',
  52. begin: '\\bfunction\\b', end: '\\)',
  53. lexems: [hljs.UNDERSCORE_IDENT_RE],
  54. keywords: {'function': 1},
  55. contains: ['title', 'params', 'comment']
  56. },
  57. {
  58. className: 'title',
  59. begin: '([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*', end: '^'
  60. },
  61. {
  62. className: 'params',
  63. begin: '\\(', endsWithParent: true,
  64. contains: ['comment']
  65. },
  66. // number
  67. hljs.C_NUMBER_MODE,
  68. // string
  69. hljs.APOS_STRING_MODE,
  70. hljs.QUOTE_STRING_MODE,
  71. {
  72. className: 'string',
  73. begin: OPENING_LONG_BRACKET, end: CLOSING_LONG_BRACKET,
  74. contains: ['long_brackets'],
  75. relevance: 10
  76. },
  77. hljs.BACKSLASH_ESCAPE
  78. ]
  79. };
  80. }();