prism-markup.js 894 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. Prism.languages.markup = {
  2. 'comment': /<!--[\w\W]*?-->/,
  3. 'prolog': /<\?.+?\?>/,
  4. 'doctype': /<!DOCTYPE.+?>/,
  5. 'cdata': /<!\[CDATA\[[\w\W]*?]]>/i,
  6. 'tag': {
  7. pattern: /<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/i,
  8. inside: {
  9. 'tag': {
  10. pattern: /^<\/?[\w:-]+/i,
  11. inside: {
  12. 'punctuation': /^<\/?/,
  13. 'namespace': /^[\w-]+?:/
  14. }
  15. },
  16. 'attr-value': {
  17. pattern: /=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,
  18. inside: {
  19. 'punctuation': /=|>|"/
  20. }
  21. },
  22. 'punctuation': /\/?>/,
  23. 'attr-name': {
  24. pattern: /[\w:-]+/,
  25. inside: {
  26. 'namespace': /^[\w-]+?:/
  27. }
  28. }
  29. }
  30. },
  31. 'entity': /&#?[\da-z]{1,8};/i
  32. };
  33. // Plugin to make entity title show the real entity, idea by Roman Komarov
  34. Prism.hooks.add('wrap', function(env) {
  35. if (env.type === 'entity') {
  36. env.attributes['title'] = env.content.replace(/&amp;/, '&');
  37. }
  38. });