/samples/scalate-presentation/src/highlight/languages/html-xml.js

http://github.com/scalate/scalate · JavaScript · 140 lines · 131 code · 6 blank · 3 comment · 0 complexity · d4098de5b75de96bc9ead1280aac597d MD5 · raw file

  1. /*
  2. Language: HTML, XML
  3. */
  4. hljs.XML_COMMENT = {
  5. className: 'comment',
  6. begin: '<!--', end: '-->'
  7. };
  8. hljs.XML_ATTR = {
  9. className: 'attribute',
  10. begin: '\\s[A-Za-z0-9\\._:-]+=', end: '^',
  11. contains: ['value']
  12. };
  13. hljs.XML_VALUE_QUOT = {
  14. className: 'value',
  15. begin: '"', end: '"'
  16. };
  17. hljs.XML_VALUE_APOS = {
  18. className: 'value',
  19. begin: '\'', end: '\''
  20. };
  21. hljs.LANGUAGES.xml = {
  22. defaultMode: {
  23. contains: ['pi', 'comment', 'cdata', 'tag']
  24. },
  25. case_insensitive: true,
  26. modes: [
  27. {
  28. className: 'pi',
  29. begin: '<\\?', end: '\\?>',
  30. relevance: 10
  31. },
  32. hljs.XML_COMMENT,
  33. {
  34. className: 'cdata',
  35. begin: '<\\!\\[CDATA\\[', end: '\\]\\]>'
  36. },
  37. {
  38. className: 'tag',
  39. begin: '</?', end: '>',
  40. contains: ['title', 'tag_internal'],
  41. relevance: 1.5
  42. },
  43. {
  44. className: 'title',
  45. begin: '[A-Za-z0-9\\._:-]+', end: '^',
  46. relevance: 0
  47. },
  48. {
  49. className: 'tag_internal',
  50. begin: '^', endsWithParent: true, noMarkup: true,
  51. contains: ['attribute'],
  52. relevance: 0,
  53. illegal: '[\\+\\.]'
  54. },
  55. hljs.XML_ATTR,
  56. hljs.XML_VALUE_QUOT,
  57. hljs.XML_VALUE_APOS
  58. ]
  59. };
  60. hljs.HTML_TAGS = {'code': 1, 'kbd': 1, 'font': 1, 'noscript': 1, 'style': 1, 'img': 1, 'title': 1, 'menu': 1, 'tt': 1, 'tr': 1, 'param': 1, 'li': 1, 'tfoot': 1, 'th': 1, 'input': 1, 'td': 1, 'dl': 1, 'blockquote': 1, 'fieldset': 1, 'big': 1, 'dd': 1, 'abbr': 1, 'optgroup': 1, 'dt': 1, 'button': 1, 'isindex': 1, 'p': 1, 'small': 1, 'div': 1, 'dir': 1, 'em': 1, 'frame': 1, 'meta': 1, 'sub': 1, 'bdo': 1, 'label': 1, 'acronym': 1, 'sup': 1, 'body': 1, 'xml': 1, 'basefont': 1, 'base': 1, 'br': 1, 'address': 1, 'strong': 1, 'legend': 1, 'ol': 1, 'script': 1, 'caption': 1, 's': 1, 'col': 1, 'h2': 1, 'h3': 1, 'h1': 1, 'h6': 1, 'h4': 1, 'h5': 1, 'table': 1, 'select': 1, 'noframes': 1, 'span': 1, 'area': 1, 'dfn': 1, 'strike': 1, 'cite': 1, 'thead': 1, 'head': 1, 'option': 1, 'form': 1, 'hr': 1, 'var': 1, 'link': 1, 'b': 1, 'colgroup': 1, 'ul': 1, 'applet': 1, 'del': 1, 'iframe': 1, 'pre': 1, 'frameset': 1, 'ins': 1, 'tbody': 1, 'html': 1, 'samp': 1, 'map': 1, 'object': 1, 'a': 1, 'xmlns': 1, 'center': 1, 'textarea': 1, 'i': 1, 'q': 1, 'u': 1};
  61. hljs.HTML_DOCTYPE = {
  62. className: 'doctype',
  63. begin: '<!DOCTYPE', end: '>',
  64. relevance: 10
  65. };
  66. hljs.HTML_ATTR = {
  67. className: 'attribute',
  68. begin: '\\s[a-zA-Z\\:_-]+=', end: '^',
  69. contains: ['value']
  70. };
  71. hljs.HTML_SHORT_ATTR = {
  72. className: 'attribute',
  73. begin: ' [a-zA-Z]+', end: '^'
  74. };
  75. hljs.HTML_VALUE = {
  76. className: 'value',
  77. begin: '[a-zA-Z0-9]+', end: '^'
  78. };
  79. hljs.LANGUAGES.html = {
  80. defaultMode: {
  81. contains: ['tag', 'comment', 'doctype', 'vbscript']
  82. },
  83. case_insensitive: true,
  84. modes: [
  85. hljs.XML_COMMENT,
  86. hljs.HTML_DOCTYPE,
  87. {
  88. className: 'tag',
  89. lexems: [hljs.IDENT_RE],
  90. keywords: hljs.HTML_TAGS,
  91. begin: '<style', end: '>',
  92. contains: ['attribute'],
  93. illegal: '[\\+\\.]',
  94. starts: 'css'
  95. },
  96. {
  97. className: 'tag',
  98. lexems: [hljs.IDENT_RE],
  99. keywords: hljs.HTML_TAGS,
  100. begin: '<script', end: '>',
  101. contains: ['attribute'],
  102. illegal: '[\\+\\.]',
  103. starts: 'javascript'
  104. },
  105. {
  106. className: 'tag',
  107. lexems: [hljs.IDENT_RE],
  108. keywords: hljs.HTML_TAGS,
  109. begin: '<[A-Za-z/]', end: '>',
  110. contains: ['attribute'],
  111. illegal: '[\\+\\.]'
  112. },
  113. {
  114. className: 'css',
  115. end: '</style>', returnEnd: true,
  116. subLanguage: 'css'
  117. },
  118. {
  119. className: 'javascript',
  120. end: '</script>', returnEnd: true,
  121. subLanguage: 'javascript'
  122. },
  123. hljs.HTML_ATTR,
  124. hljs.HTML_SHORT_ATTR,
  125. hljs.XML_VALUE_QUOT,
  126. hljs.XML_VALUE_APOS,
  127. hljs.HTML_VALUE,
  128. {
  129. className: 'vbscript',
  130. begin: '<%', end: '%>',
  131. subLanguage: 'vbscript'
  132. }
  133. ]
  134. };