1 line
3.0 KiB
JavaScript
1 line
3.0 KiB
JavaScript
function e(e){return RegExp(`^(?:`+e.join(`|`)+`)`,`i`)}function t(e){return RegExp(`^(?:`+e.join(`|`)+`)$`,`i`)}var n=t(`_G,_VERSION,assert,collectgarbage,dofile,error,getfenv,getmetatable,ipairs,load,loadfile,loadstring,module,next,pairs,pcall,print,rawequal,rawget,rawset,require,select,setfenv,setmetatable,tonumber,tostring,type,unpack,xpcall,coroutine.create,coroutine.resume,coroutine.running,coroutine.status,coroutine.wrap,coroutine.yield,debug.debug,debug.getfenv,debug.gethook,debug.getinfo,debug.getlocal,debug.getmetatable,debug.getregistry,debug.getupvalue,debug.setfenv,debug.sethook,debug.setlocal,debug.setmetatable,debug.setupvalue,debug.traceback,close,flush,lines,read,seek,setvbuf,write,io.close,io.flush,io.input,io.lines,io.open,io.output,io.popen,io.read,io.stderr,io.stdin,io.stdout,io.tmpfile,io.type,io.write,math.abs,math.acos,math.asin,math.atan,math.atan2,math.ceil,math.cos,math.cosh,math.deg,math.exp,math.floor,math.fmod,math.frexp,math.huge,math.ldexp,math.log,math.log10,math.max,math.min,math.modf,math.pi,math.pow,math.rad,math.random,math.randomseed,math.sin,math.sinh,math.sqrt,math.tan,math.tanh,os.clock,os.date,os.difftime,os.execute,os.exit,os.getenv,os.remove,os.rename,os.setlocale,os.time,os.tmpname,package.cpath,package.loaded,package.loaders,package.loadlib,package.path,package.preload,package.seeall,string.byte,string.char,string.dump,string.find,string.format,string.gmatch,string.gsub,string.len,string.lower,string.match,string.rep,string.reverse,string.sub,string.upper,table.concat,table.insert,table.maxn,table.remove,table.sort`.split(`,`)),r=t([`and`,`break`,`elseif`,`false`,`nil`,`not`,`or`,`return`,`true`,`function`,`end`,`if`,`then`,`else`,`do`,`while`,`repeat`,`until`,`for`,`in`,`local`]),i=t([`function`,`if`,`repeat`,`do`,`\\(`,`{`]),a=t([`end`,`until`,`\\)`,`}`]),o=e([`end`,`until`,`\\)`,`}`,`else`,`elseif`]);function s(e){for(var t=0;e.eat(`=`);)++t;return e.eat(`[`),t}function c(e,t){var n=e.next();return n==`-`&&e.eat(`-`)?e.eat(`[`)&&e.eat(`[`)?(t.cur=l(s(e),`comment`))(e,t):(e.skipToEnd(),`comment`):n==`"`||n==`'`?(t.cur=u(n))(e,t):n==`[`&&/[\[=]/.test(e.peek())?(t.cur=l(s(e),`string`))(e,t):/\d/.test(n)?(e.eatWhile(/[\w.%]/),`number`):/[\w_]/.test(n)?(e.eatWhile(/[\w\\\-_.]/),`variable`):null}function l(e,t){return function(n,r){for(var i=null,a;(a=n.next())!=null;)if(i==null)a==`]`&&(i=0);else if(a==`=`)++i;else if(a==`]`&&i==e){r.cur=c;break}else i=null;return t}}function u(e){return function(t,n){for(var r=!1,i;(i=t.next())!=null&&!(i==e&&!r);)r=!r&&i==`\\`;return r||(n.cur=c),`string`}}var d={name:`lua`,startState:function(){return{basecol:0,indentDepth:0,cur:c}},token:function(e,t){if(e.eatSpace())return null;var o=t.cur(e,t),s=e.current();return o==`variable`&&(r.test(s)?o=`keyword`:n.test(s)&&(o=`builtin`)),o!=`comment`&&o!=`string`&&(i.test(s)?++t.indentDepth:a.test(s)&&--t.indentDepth),o},indent:function(e,t,n){var r=o.test(t);return e.basecol+n.unit*(e.indentDepth-+!!r)},languageData:{indentOnInput:/^\s*(?:end|until|else|\)|\})$/,commentTokens:{line:`--`,block:{open:`--[[`,close:`]]--`}}}};export{d as lua}; |