prismjs_components_prism-markup.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. // node_modules/prismjs/components/prism-markup.js
  2. Prism.languages.markup = {
  3. "comment": {
  4. pattern: /<!--(?:(?!<!--)[\s\S])*?-->/,
  5. greedy: true
  6. },
  7. "prolog": {
  8. pattern: /<\?[\s\S]+?\?>/,
  9. greedy: true
  10. },
  11. "doctype": {
  12. // https://www.w3.org/TR/xml/#NT-doctypedecl
  13. pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i,
  14. greedy: true,
  15. inside: {
  16. "internal-subset": {
  17. pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/,
  18. lookbehind: true,
  19. greedy: true,
  20. inside: null
  21. // see below
  22. },
  23. "string": {
  24. pattern: /"[^"]*"|'[^']*'/,
  25. greedy: true
  26. },
  27. "punctuation": /^<!|>$|[[\]]/,
  28. "doctype-tag": /^DOCTYPE/i,
  29. "name": /[^\s<>'"]+/
  30. }
  31. },
  32. "cdata": {
  33. pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
  34. greedy: true
  35. },
  36. "tag": {
  37. pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,
  38. greedy: true,
  39. inside: {
  40. "tag": {
  41. pattern: /^<\/?[^\s>\/]+/,
  42. inside: {
  43. "punctuation": /^<\/?/,
  44. "namespace": /^[^\s>\/:]+:/
  45. }
  46. },
  47. "special-attr": [],
  48. "attr-value": {
  49. pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,
  50. inside: {
  51. "punctuation": [
  52. {
  53. pattern: /^=/,
  54. alias: "attr-equals"
  55. },
  56. {
  57. pattern: /^(\s*)["']|["']$/,
  58. lookbehind: true
  59. }
  60. ]
  61. }
  62. },
  63. "punctuation": /\/?>/,
  64. "attr-name": {
  65. pattern: /[^\s>\/]+/,
  66. inside: {
  67. "namespace": /^[^\s>\/:]+:/
  68. }
  69. }
  70. }
  71. },
  72. "entity": [
  73. {
  74. pattern: /&[\da-z]{1,8};/i,
  75. alias: "named-entity"
  76. },
  77. /&#x?[\da-f]{1,8};/i
  78. ]
  79. };
  80. Prism.languages.markup["tag"].inside["attr-value"].inside["entity"] = Prism.languages.markup["entity"];
  81. Prism.languages.markup["doctype"].inside["internal-subset"].inside = Prism.languages.markup;
  82. Prism.hooks.add("wrap", function(env) {
  83. if (env.type === "entity") {
  84. env.attributes["title"] = env.content.replace(/&amp;/, "&");
  85. }
  86. });
  87. Object.defineProperty(Prism.languages.markup.tag, "addInlined", {
  88. /**
  89. * Adds an inlined language to markup.
  90. *
  91. * An example of an inlined language is CSS with `<style>` tags.
  92. *
  93. * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as
  94. * case insensitive.
  95. * @param {string} lang The language key.
  96. * @example
  97. * addInlined('style', 'css');
  98. */
  99. value: function addInlined(tagName, lang) {
  100. var includedCdataInside = {};
  101. includedCdataInside["language-" + lang] = {
  102. pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i,
  103. lookbehind: true,
  104. inside: Prism.languages[lang]
  105. };
  106. includedCdataInside["cdata"] = /^<!\[CDATA\[|\]\]>$/i;
  107. var inside = {
  108. "included-cdata": {
  109. pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i,
  110. inside: includedCdataInside
  111. }
  112. };
  113. inside["language-" + lang] = {
  114. pattern: /[\s\S]+/,
  115. inside: Prism.languages[lang]
  116. };
  117. var def = {};
  118. def[tagName] = {
  119. pattern: RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g, function() {
  120. return tagName;
  121. }), "i"),
  122. lookbehind: true,
  123. greedy: true,
  124. inside
  125. };
  126. Prism.languages.insertBefore("markup", "cdata", def);
  127. }
  128. });
  129. Object.defineProperty(Prism.languages.markup.tag, "addAttribute", {
  130. /**
  131. * Adds an pattern to highlight languages embedded in HTML attributes.
  132. *
  133. * An example of an inlined language is CSS with `style` attributes.
  134. *
  135. * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as
  136. * case insensitive.
  137. * @param {string} lang The language key.
  138. * @example
  139. * addAttribute('style', 'css');
  140. */
  141. value: function(attrName, lang) {
  142. Prism.languages.markup.tag.inside["special-attr"].push({
  143. pattern: RegExp(
  144. /(^|["'\s])/.source + "(?:" + attrName + ")" + /\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,
  145. "i"
  146. ),
  147. lookbehind: true,
  148. inside: {
  149. "attr-name": /^[^\s=]+/,
  150. "attr-value": {
  151. pattern: /=[\s\S]+/,
  152. inside: {
  153. "value": {
  154. pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,
  155. lookbehind: true,
  156. alias: [lang, "language-" + lang],
  157. inside: Prism.languages[lang]
  158. },
  159. "punctuation": [
  160. {
  161. pattern: /^=/,
  162. alias: "attr-equals"
  163. },
  164. /"|'/
  165. ]
  166. }
  167. }
  168. }
  169. });
  170. }
  171. });
  172. Prism.languages.html = Prism.languages.markup;
  173. Prism.languages.mathml = Prism.languages.markup;
  174. Prism.languages.svg = Prism.languages.markup;
  175. Prism.languages.xml = Prism.languages.extend("markup", {});
  176. Prism.languages.ssml = Prism.languages.xml;
  177. Prism.languages.atom = Prism.languages.xml;
  178. Prism.languages.rss = Prism.languages.xml;
  179. //# sourceMappingURL=prismjs_components_prism-markup.js.map