UNPKG

4.28 kBJavaScriptView Raw
1hljs.registerLanguage("python",(()=>{"use strict";function e(e){
2return e?"string"==typeof e?e:e.source:null}function n(...n){
3return n.map((n=>e(n))).join("")}const t="[a-zA-Z]\\w*",a=(t,a,s={})=>{
4const i=((e,...n)=>{const t=Object.create(null);for(const n in e)t[n]=e[n]
5;return n.forEach((e=>{for(const n in e)t[n]=e[n]})),t})({scope:"comment",
6begin:t,end:a,contains:[]},s);i.contains.push({scope:"doctag",
7begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
8end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
9;const r=function(...n){return"("+((e=>{const n=e[e.length-1]
10;return"object"==typeof n&&n.constructor===Object?(e.splice(e.length-1,1),n):{}
11})(n).capture?"":"?:")+n.map((n=>e(n))).join("|")+")"
12}("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
13;return i.contains.push({begin:n(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
14};return a("//","$"),a("/\\*","\\*/"),a("#","$"),e=>{const a={
15$pattern:/[A-Za-z]\w+|__\w+__/,
16keyword:["and","as","assert","async","await","break","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],
17built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],
18literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],
19type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]
20},s={className:"meta",begin:/^(>>>|\.\.\.) /},i={className:"subst",begin:/\{/,
21end:/\}/,keywords:a,illegal:/#/},r={begin:/\{\{/,relevance:0},o={
22className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{
23begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,
24contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{
25begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,
26contains:[e.BACKSLASH_ESCAPE,s],relevance:10},{
27begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,
28contains:[e.BACKSLASH_ESCAPE,s,r,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,
29end:/"""/,contains:[e.BACKSLASH_ESCAPE,s,r,i]},{begin:/([uU]|[rR])'/,end:/'/,
30relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{
31begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,
32end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,
33contains:[e.BACKSLASH_ESCAPE,r,i]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,
34contains:[e.BACKSLASH_ESCAPE,r,i]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
35},l="[0-9](_?[0-9])*",c=`(\\b(${l}))?\\.(${l})|\\b(${l})\\.`,b={
36className:"number",relevance:0,variants:[{
37begin:`(\\b(${l})|(${c}))[eE][+-]?(${l})[jJ]?\\b`},{begin:`(${c})[jJ]?`},{
38begin:"\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"},{
39begin:"\\b0[bB](_?[01])+[lL]?\\b"},{begin:"\\b0[oO](_?[0-7])+[lL]?\\b"},{
40begin:"\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"},{begin:`\\b(${l})[jJ]\\b`}]},d={
41className:"comment",begin:(g=/# type:/,n("(?=",g,")")),end:/$/,keywords:a,
42contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]};var g
43;const p={className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{
44begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,
45contains:["self",s,b,o,e.HASH_COMMENT_MODE]}]};return i.contains=[o,b,s],{
46name:"Python",aliases:["py","gyp","ipython"],keywords:a,
47illegal:/(<\/|->|\?)|=>/,contains:[s,b,{begin:/\bself\b/},{beginKeywords:"if",
48relevance:0},o,d,e.HASH_COMMENT_MODE,{match:[/def/,/\s+/,t],scope:{1:"keyword",
493:"title.function"},contains:[p]},{variants:[{
50match:[/class/,/\s+/,t,/\s*/,/\(\s*/,t,/\s*\)/]},{match:[/class/,/\s+/,t]}],
51scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{
52className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[b,p,o]}]}}})());
\No newline at end of file