83 lines
2.0 KiB
JavaScript
83 lines
2.0 KiB
JavaScript
(function (Prism) {
|
|
|
|
var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;
|
|
|
|
Prism.languages.css = {
|
|
'comment': /\/\*[\s\S]*?\*\//,
|
|
'atrule': {
|
|
pattern: /@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,
|
|
inside: {
|
|
'rule': /^@[\w-]+/,
|
|
'selector-function-argument': {
|
|
pattern: /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,
|
|
lookbehind: true,
|
|
alias: 'selector'
|
|
},
|
|
'keyword': {
|
|
pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/,
|
|
lookbehind: true
|
|
}
|
|
// See rest below
|
|
}
|
|
},
|
|
'url': {
|
|
// https://drafts.csswg.org/css-values-3/#urls
|
|
pattern: RegExp('\\burl\\((?:' + string.source + '|' + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ')\\)', 'i'),
|
|
greedy: true,
|
|
inside: {
|
|
'function': /^url/i,
|
|
'punctuation': /^\(|\)$/,
|
|
'string': {
|
|
pattern: RegExp('^' + string.source + '$'),
|
|
alias: 'url'
|
|
}
|
|
}
|
|
},
|
|
'selector': RegExp('[^{}\\s](?:[^{};"\'\\s]|\\s+(?![\\s{])|' + string.source + ')*(?=\\s*\\{)'),
|
|
'string': {
|
|
pattern: string,
|
|
greedy: true
|
|
},
|
|
'property': /(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,
|
|
'important': /!important\b/i,
|
|
'function': /[-a-z0-9]+(?=\()/i,
|
|
'punctuation': /[(){};:,]/
|
|
};
|
|
|
|
Prism.languages.css['atrule'].inside.rest = Prism.languages.css;
|
|
|
|
var markup = Prism.languages.markup;
|
|
if (markup) {
|
|
markup.tag.addInlined('style', 'css');
|
|
|
|
Prism.languages.insertBefore('inside', 'attr-value', {
|
|
'style-attr': {
|
|
pattern: /(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,
|
|
lookbehind: true,
|
|
inside: {
|
|
'attr-value': {
|
|
pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,
|
|
inside: {
|
|
'style': {
|
|
pattern: /(["'])[\s\S]+(?=["']$)/,
|
|
lookbehind: true,
|
|
alias: 'language-css',
|
|
inside: Prism.languages.css
|
|
},
|
|
'punctuation': [
|
|
{
|
|
pattern: /^=/,
|
|
alias: 'attr-equals'
|
|
},
|
|
/"|'/
|
|
]
|
|
}
|
|
},
|
|
'attr-name': /^style/i
|
|
}
|
|
}
|
|
}, markup.tag);
|
|
}
|
|
|
|
}(Prism));
|