haml.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. /*
  2. Language: Haml
  3. Requires: ruby.js
  4. Author: Dan Allen <[email protected]>
  5. Website: http://google.com/profiles/dan.j.allen
  6. Category: template
  7. */
  8. // TODO support filter tags like :javascript, support inline HTML
  9. function(hljs) {
  10. return {
  11. case_insensitive: true,
  12. contains: [
  13. {
  14. className: 'meta',
  15. begin: '^!!!( (5|1\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\b.*))?$',
  16. relevance: 10
  17. },
  18. // FIXME these comments should be allowed to span indented lines
  19. hljs.COMMENT(
  20. '^\\s*(!=#|=#|-#|/).*$',
  21. false,
  22. {
  23. relevance: 0
  24. }
  25. ),
  26. {
  27. begin: '^\\s*(-|=|!=)(?!#)',
  28. starts: {
  29. end: '\\n',
  30. subLanguage: 'ruby'
  31. }
  32. },
  33. {
  34. className: 'tag',
  35. begin: '^\\s*%',
  36. contains: [
  37. {
  38. className: 'selector-tag',
  39. begin: '\\w+'
  40. },
  41. {
  42. className: 'selector-id',
  43. begin: '#[\\w-]+'
  44. },
  45. {
  46. className: 'selector-class',
  47. begin: '\\.[\\w-]+'
  48. },
  49. {
  50. begin: '{\\s*',
  51. end: '\\s*}',
  52. contains: [
  53. {
  54. begin: ':\\w+\\s*=>',
  55. end: ',\\s+',
  56. returnBegin: true,
  57. endsWithParent: true,
  58. contains: [
  59. {
  60. className: 'attr',
  61. begin: ':\\w+'
  62. },
  63. hljs.APOS_STRING_MODE,
  64. hljs.QUOTE_STRING_MODE,
  65. {
  66. begin: '\\w+',
  67. relevance: 0
  68. }
  69. ]
  70. }
  71. ]
  72. },
  73. {
  74. begin: '\\(\\s*',
  75. end: '\\s*\\)',
  76. excludeEnd: true,
  77. contains: [
  78. {
  79. begin: '\\w+\\s*=',
  80. end: '\\s+',
  81. returnBegin: true,
  82. endsWithParent: true,
  83. contains: [
  84. {
  85. className: 'attr',
  86. begin: '\\w+',
  87. relevance: 0
  88. },
  89. hljs.APOS_STRING_MODE,
  90. hljs.QUOTE_STRING_MODE,
  91. {
  92. begin: '\\w+',
  93. relevance: 0
  94. }
  95. ]
  96. }
  97. ]
  98. }
  99. ]
  100. },
  101. {
  102. begin: '^\\s*[=~]\\s*'
  103. },
  104. {
  105. begin: '#{',
  106. starts: {
  107. end: '}',
  108. subLanguage: 'ruby'
  109. }
  110. }
  111. ]
  112. };
  113. }