126 lines
5.3 KiB
JavaScript
126 lines
5.3 KiB
JavaScript
(Prism.languages.javascript = Prism.languages.extend('clike', {
|
|
'class-name': [
|
|
Prism.languages.clike['class-name'],
|
|
{
|
|
pattern:
|
|
/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,
|
|
lookbehind: !0,
|
|
},
|
|
],
|
|
keyword: [
|
|
{ pattern: /((?:^|\})\s*)catch\b/, lookbehind: !0 },
|
|
{
|
|
pattern:
|
|
/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,
|
|
lookbehind: !0,
|
|
},
|
|
],
|
|
function:
|
|
/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,
|
|
number: {
|
|
pattern: RegExp(
|
|
'(^|[^\\w$])(?:NaN|Infinity|0[bB][01]+(?:_[01]+)*n?|0[oO][0-7]+(?:_[0-7]+)*n?|0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?|\\d+(?:_\\d+)*n|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?)(?![\\w$])',
|
|
),
|
|
lookbehind: !0,
|
|
},
|
|
operator:
|
|
/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/,
|
|
})),
|
|
(Prism.languages.javascript['class-name'][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/),
|
|
Prism.languages.insertBefore('javascript', 'keyword', {
|
|
regex: {
|
|
pattern: RegExp(
|
|
'((?:^|[^$\\w\\xA0-\\uFFFF."\'\\])\\s]|\\b(?:return|yield))\\s*)/(?:(?:\\[(?:[^\\]\\\\\r\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}|(?:\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.|\\[(?:[^[\\]\\\\\r\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\r\n])+/[dgimyus]{0,7}v[dgimyus]{0,7})(?=(?:\\s|/\\*(?:[^*]|\\*(?!/))*\\*/)*(?:$|[\r\n,.;:})\\]]|//))',
|
|
),
|
|
lookbehind: !0,
|
|
greedy: !0,
|
|
inside: {
|
|
'regex-source': {
|
|
pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/,
|
|
lookbehind: !0,
|
|
alias: 'language-regex',
|
|
inside: Prism.languages.regex,
|
|
},
|
|
'regex-delimiter': /^\/|\/$/,
|
|
'regex-flags': /^[a-z]+$/,
|
|
},
|
|
},
|
|
'function-variable': {
|
|
pattern:
|
|
/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,
|
|
alias: 'function',
|
|
},
|
|
parameter: [
|
|
{
|
|
pattern:
|
|
/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.javascript,
|
|
},
|
|
{
|
|
pattern:
|
|
/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.javascript,
|
|
},
|
|
{
|
|
pattern:
|
|
/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.javascript,
|
|
},
|
|
{
|
|
pattern:
|
|
/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,
|
|
lookbehind: !0,
|
|
inside: Prism.languages.javascript,
|
|
},
|
|
],
|
|
constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/,
|
|
}),
|
|
Prism.languages.insertBefore('javascript', 'string', {
|
|
hashbang: { pattern: /^#!.*/, greedy: !0, alias: 'comment' },
|
|
'template-string': {
|
|
pattern:
|
|
/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,
|
|
greedy: !0,
|
|
inside: {
|
|
'template-punctuation': { pattern: /^`|`$/, alias: 'string' },
|
|
interpolation: {
|
|
pattern:
|
|
/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,
|
|
lookbehind: !0,
|
|
inside: {
|
|
'interpolation-punctuation': {
|
|
pattern: /^\$\{|\}$/,
|
|
alias: 'punctuation',
|
|
},
|
|
rest: Prism.languages.javascript,
|
|
},
|
|
},
|
|
string: /[\s\S]+/,
|
|
},
|
|
},
|
|
'string-property': {
|
|
pattern:
|
|
/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,
|
|
lookbehind: !0,
|
|
greedy: !0,
|
|
alias: 'property',
|
|
},
|
|
}),
|
|
Prism.languages.insertBefore('javascript', 'operator', {
|
|
'literal-property': {
|
|
pattern:
|
|
/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,
|
|
lookbehind: !0,
|
|
alias: 'property',
|
|
},
|
|
}),
|
|
Prism.languages.markup
|
|
&& (Prism.languages.markup.tag.addInlined('script', 'javascript'),
|
|
Prism.languages.markup.tag.addAttribute(
|
|
'on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)',
|
|
'javascript',
|
|
)),
|
|
(Prism.languages.js = Prism.languages.javascript);
|