Build 533169stable
Module 97464
4,032 characters · in no known chunkDependencies
Source Raw
function(e){function t(e){return RegExp(e.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"),"m")}function n(e){return e?"string"==typeof e?e:e.source:null}function r(e){return i("(?=",e,")")}function i(...e){return e.map(e=>n(e)).join("")}function s(e){let t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}function a(...e){return"("+(s(e).capture?"":"?:")+e.map(e=>n(e)).join("|")+")"}e.exports=function(e){let n={scope:"keyword",match:/\b(yield|return|let|do|match|use)!/},s=["if","else","endif","line","nowarn","light","r","i","I","load","time","help","quit"],o=["bool","byte","sbyte","int8","int16","int32","uint8","uint16","uint32","int","uint","int64","uint64","nativeint","unativeint","decimal","float","double","float32","single","char","string","unit","bigint","option","voption","list","array","seq","byref","exn","inref","nativeptr","obj","outref","voidptr","Result"],l={keyword:["abstract","and","as","assert","base","begin","class","default","delegate","do","done","downcast","downto","elif","else","end","exception","extern","finally","fixed","for","fun","function","global","if","in","inherit","inline","interface","internal","lazy","let","match","member","module","mutable","namespace","new","of","open","or","override","private","public","rec","return","static","struct","then","to","try","type","upcast","use","val","void","when","while","with","yield"],literal:["true","false","null","Some","None","Ok","Error","infinity","infinityf","nan","nanf"],built_in:["not","ref","raise","reraise","dict","readOnlyDict","set","get","enum","sizeof","typeof","typedefof","nameof","nullArg","invalidArg","invalidOp","id","fst","snd","ignore","lock","using","box","unbox","tryUnbox","printf","printfn","sprintf","eprintf","eprintfn","fprintf","fprintfn","failwith","failwithf"],"variable.constant":["__LINE__","__SOURCE_DIRECTORY__","__SOURCE_FILE__"]},u={variants:[e.COMMENT(/\(\*(?!\))/,/\*\)/,{contains:["self"]}),e.C_LINE_COMMENT_MODE]},c=/[a-zA-Z_](\w|')*/,d={scope:"variable",begin:/``/,end:/``/},_=/\B('|\^)/,f={scope:"symbol",variants:[{match:i(_,/``.*?``/)},{match:i(_,e.UNDERSCORE_IDENT_RE)}],relevance:0},p=function({includeEqual:e}){let n,s=i("[",...Array.from(n=e?"!%&*+-/<=>@^|~?":"!%&*+-/<>@^|~?").map(t),"]"),o=a(s,/\./),l=i(o,r(o)),u=a(i(l,o,"*"),i(s,"+"));return{scope:"operator",match:a(u,/:\?>/,/:\?/,/:>/,/:=/,/::?/,/\$/),relevance:0}},h=p({includeEqual:!0}),m=p({includeEqual:!1}),E=function(t,n){return{begin:i(t,r(i(/\s*/,a(/\w/,/'/,/\^/,/#/,/``/,/\(/,/{\|/)))),beginScope:n,end:r(a(/\n/,/=/)),relevance:0,keywords:e.inherit(l,{type:o}),contains:[u,f,e.inherit(d,{scope:null}),m]}},g=E(/:/,"operator"),A=E(/\bof\b/,"keyword"),I={begin:[/(^|\s+)/,/type/,/\s+/,c],beginScope:{2:"keyword",4:"title.class"},end:r(/\(|=|$/),keywords:l,contains:[u,e.inherit(d,{scope:null}),f,{scope:"operator",match:/<|>/},g]},T={scope:"computation-expression",match:/\b[_a-z]\w*(?=\s*\{)/},S={begin:[/^\s*/,i(/#/,a(...s)),/\b/],beginScope:{2:"meta"},end:r(/\s|$/)},y={variants:[e.BINARY_NUMBER_MODE,e.C_NUMBER_MODE]},v={scope:"string",begin:/"/,end:/"/,contains:[e.BACKSLASH_ESCAPE]},N={scope:"string",begin:/@"/,end:/"/,contains:[{match:/""/},e.BACKSLASH_ESCAPE]},C={scope:"string",begin:/"""/,end:/"""/,relevance:2},R={scope:"subst",begin:/\{/,end:/\}/,keywords:l},O={scope:"string",begin:/\$"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},e.BACKSLASH_ESCAPE,R]},b={scope:"string",begin:/(\$@|@\$)"/,end:/"/,contains:[{match:/\{\{/},{match:/\}\}/},{match:/""/},e.BACKSLASH_ESCAPE,R]},D={scope:"string",begin:/\$"""/,end:/"""/,contains:[{match:/\{\{/},{match:/\}\}/},R],relevance:2},L={scope:"string",match:i(/'/,a(/[^\\']/,/\\(?:.|\d{3}|x[a-fA-F\d]{2}|u[a-fA-F\d]{4}|U[a-fA-F\d]{8})/),/'/)};return R.contains=[b,O,N,v,L,n,u,d,g,T,S,y,f,h],{name:"F#",aliases:["fs","f#"],keywords:l,illegal:/\/\*/,classNameAliases:{"computation-expression":"keyword"},contains:[n,{variants:[D,b,O,C,N,v,L]},u,d,I,{scope:"meta",begin:/\[</,end:/>\]/,relevance:2,contains:[d,C,N,v,L,y]},A,g,T,S,y,f,h]}}}