mirror of
https://github.com/discourse/discourse.git
synced 2024-12-15 11:33:40 +08:00
aee7ef0dc9
Highlight.js changed their default branch from master to main. This switches to the @highlightjs/cdn-assets package, thus sidestepping the problem. It's a slightly cleaner integration though (no need to build locally anymore).
61 lines
5.1 KiB
JavaScript
61 lines
5.1 KiB
JavaScript
hljs.registerLanguage("javascript",(()=>{"use strict"
|
|
;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"],a=["true","false","null","undefined","NaN","Infinity"],s=[].concat(["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],["arguments","this","super","console","window","document","localStorage","module","global"],["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer"],["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"])
|
|
;function r(e){return t("(?=",e,")")}function t(...e){return e.map((e=>{
|
|
return(n=e)?"string"==typeof n?n:n.source:null;var n})).join("")}return i=>{
|
|
const c=e,o={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,
|
|
isTrulyOpeningTag:(e,n)=>{const a=e[0].length+e.index,s=e.input[a]
|
|
;"<"!==s?">"===s&&(((e,{after:n})=>{const a="</"+e[0].slice(1)
|
|
;return-1!==e.input.indexOf(a,n)})(e,{after:a
|
|
})||n.ignoreMatch()):n.ignoreMatch()}},l={$pattern:e,keyword:n,literal:a,
|
|
built_in:s},b="\\.([0-9](_?[0-9])*)",g="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",d={
|
|
className:"number",variants:[{
|
|
begin:`(\\b(${g})((${b})|\\.)?|(${b}))[eE][+-]?([0-9](_?[0-9])*)\\b`},{
|
|
begin:`\\b(${g})\\b((${b})\\b|\\.)?|(${b})\\b`},{
|
|
begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
|
|
begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
|
|
begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
|
|
begin:"\\b0[0-7]+n?\\b"}],relevance:0},E={className:"subst",begin:"\\$\\{",
|
|
end:"\\}",keywords:l,contains:[]},u={begin:"html`",end:"",starts:{end:"`",
|
|
returnEnd:!1,contains:[i.BACKSLASH_ESCAPE,E],subLanguage:"xml"}},_={
|
|
begin:"css`",end:"",starts:{end:"`",returnEnd:!1,
|
|
contains:[i.BACKSLASH_ESCAPE,E],subLanguage:"css"}},m={className:"string",
|
|
begin:"`",end:"`",contains:[i.BACKSLASH_ESCAPE,E]},N={className:"comment",
|
|
variants:[i.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
|
|
className:"doctag",begin:"@[A-Za-z]+",contains:[{className:"type",begin:"\\{",
|
|
end:"\\}",relevance:0},{className:"variable",begin:c+"(?=\\s*(-)|$)",
|
|
endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
|
|
}),i.C_BLOCK_COMMENT_MODE,i.C_LINE_COMMENT_MODE]
|
|
},y=[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,u,_,m,d,i.REGEXP_MODE]
|
|
;E.contains=y.concat({begin:/\{/,end:/\}/,keywords:l,contains:["self"].concat(y)
|
|
});const f=[].concat(N,E.contains),A=f.concat([{begin:/\(/,end:/\)/,keywords:l,
|
|
contains:["self"].concat(f)}]),p={className:"params",begin:/\(/,end:/\)/,
|
|
excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A};return{name:"Javascript",
|
|
aliases:["js","jsx","mjs","cjs"],keywords:l,exports:{PARAMS_CONTAINS:A},
|
|
illegal:/#(?![$_A-z])/,contains:[i.SHEBANG({label:"shebang",binary:"node",
|
|
relevance:5}),{label:"use_strict",className:"meta",relevance:10,
|
|
begin:/^\s*['"]use (strict|asm)['"]/
|
|
},i.APOS_STRING_MODE,i.QUOTE_STRING_MODE,u,_,m,N,d,{
|
|
begin:t(/[{,\n]\s*/,r(t(/(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,c+"\\s*:"))),
|
|
relevance:0,contains:[{className:"attr",begin:c+r("\\s*:"),relevance:0}]},{
|
|
begin:"("+i.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
|
|
keywords:"return throw case",contains:[N,i.REGEXP_MODE,{className:"function",
|
|
begin:"(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+i.UNDERSCORE_IDENT_RE+")\\s*=>",
|
|
returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{
|
|
begin:i.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0
|
|
},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:l,contains:A}]}]
|
|
},{begin:/,/,relevance:0},{className:"",begin:/\s/,end:/\s*/,skip:!0},{
|
|
variants:[{begin:"<>",end:"</>"},{begin:o.begin,"on:begin":o.isTrulyOpeningTag,
|
|
end:o.end}],subLanguage:"xml",contains:[{begin:o.begin,end:o.end,skip:!0,
|
|
contains:["self"]}]}],relevance:0},{className:"function",
|
|
beginKeywords:"function",end:/[{;]/,excludeEnd:!0,keywords:l,
|
|
contains:["self",i.inherit(i.TITLE_MODE,{begin:c}),p],illegal:/%/},{
|
|
beginKeywords:"while if switch catch for"},{className:"function",
|
|
begin:i.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
|
|
returnBegin:!0,contains:[p,i.inherit(i.TITLE_MODE,{begin:c})]},{variants:[{
|
|
begin:"\\."+c},{begin:"\\$"+c}],relevance:0},{className:"class",
|
|
beginKeywords:"class",end:/[{;=]/,excludeEnd:!0,illegal:/[:"[\]]/,contains:[{
|
|
beginKeywords:"extends"},i.UNDERSCORE_TITLE_MODE]},{begin:/\b(?=constructor)/,
|
|
end:/[{;]/,excludeEnd:!0,contains:[i.inherit(i.TITLE_MODE,{begin:c}),"self",p]
|
|
},{begin:"(get|set)\\s+(?="+c+"\\()",end:/\{/,keywords:"get set",
|
|
contains:[i.inherit(i.TITLE_MODE,{begin:c}),{begin:/\(\)/},p]},{begin:/\$[(.]/}]
|
|
}}})()); |