prism-css.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. (function (Prism) {
  2. var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;
  3. Prism.languages.css = {
  4. 'comment': /\/\*[\s\S]*?\*\//,
  5. 'atrule': {
  6. pattern: /@[\w-]+[\s\S]*?(?:;|(?=\s*\{))/,
  7. inside: {
  8. 'rule': /^@[\w-]+/,
  9. 'selector-function-argument': {
  10. pattern: /(\bselector\s*\((?!\s*\))\s*)(?:[^()]|\((?:[^()]|\([^()]*\))*\))+?(?=\s*\))/,
  11. lookbehind: true,
  12. alias: 'selector'
  13. },
  14. 'keyword': {
  15. pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
  16. lookbehind: true
  17. }
  18. // See rest below
  19. }
  20. },
  21. 'url': {
  22. // https://drafts.csswg.org/css-values-3/#urls
  23. pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
  24. greedy: true,
  25. inside: {
  26. 'function': /^url/i,
  27. 'punctuation': /^\(|\)$/,
  28. 'string': {
  29. pattern: RegExp('^' + string.source + '$'),
  30. alias: 'url'
  31. }
  32. }
  33. },
  34. 'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'),
  35. 'string': {
  36. pattern: string,
  37. greedy: true
  38. },
  39. 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i,
  40. 'important': /!important\b/i,
  41. 'function': /[-a-z0-9]+(?=\()/i,
  42. 'punctuation': /[(){};:,]/
  43. };
  44. Prism.languages.css['atrule'].inside.rest = Prism.languages.css;
  45. var markup = Prism.languages.markup;
  46. if (markup) {
  47. markup.tag.addInlined('style', 'css');
  48. Prism.languages.insertBefore('inside', 'attr-value', {
  49. 'style-attr': {
  50. pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i,
  51. inside: {
  52. 'attr-name': {
  53. pattern: /^\s*style/i,
  54. inside: markup.tag.inside
  55. },
  56. 'punctuation': /^\s*=\s*['"]|['"]\s*$/,
  57. 'attr-value': {
  58. pattern: /.+/i,
  59. inside: Prism.languages.css
  60. }
  61. },
  62. alias: 'language-css'
  63. }
  64. }, markup.tag);
  65. }
  66. }(Prism));