UNPKG

roblox-ts

Version:

<div align="center"><img width=25% src="https://i.imgur.com/yCjHmng.png"></div> <h1 align="center"><a href="https://roblox-ts.github.io/">roblox-ts</a></h1> <div align="center">A TypeScript-to-Lua Compiler for Roblox</div> <br> <div align="center"> <a hr

51 lines 2.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const _1 = require("."); const CompilerError_1 = require("../errors/CompilerError"); const typeUtilities_1 = require("../typeUtilities"); const utility_1 = require("../utility"); function compileEnumDeclaration(state, node) { let result = ""; if (node.isConstEnum()) { return result; } const name = node.getName(); const nameNode = node.getNameNode(); _1.checkReserved(name, nameNode, true); state.pushExport(name, node); if (typeUtilities_1.shouldHoist(node, nameNode)) { state.pushHoistStack(name); } result += state.indent + `${name} = ${name} or {};\n`; result += state.indent + `do\n`; state.pushIndent(); for (const member of node.getMembers()) { const memberName = member.getName(); _1.checkReserved(memberName, member.getNameNode()); const memberValue = member.getValue(); const safeIndex = utility_1.safeLuaIndex(name, memberName); if (typeof memberValue === "string") { result += state.indent + `${safeIndex} = "${memberValue}";\n`; } else if (typeof memberValue === "number") { result += state.indent + `${safeIndex} = ${memberValue};\n`; result += state.indent + `${name}[${memberValue}] = "${memberName}";\n`; } else if (member.hasInitializer()) { const initializer = utility_1.skipNodesDownwards(member.getInitializer()); state.enterPrecedingStatementContext(); const expStr = _1.getReadableExpressionName(state, initializer); result += state.exitPrecedingStatementContextAndJoin(); result += state.indent + `${safeIndex} = ${expStr};\n`; result += state.indent + `${name}[${expStr}] = "${memberName}";\n`; } else { throw new CompilerError_1.CompilerError("Unexpected enum structure.", node, CompilerError_1.CompilerErrorType.BadEnum, true); } } state.popIndent(); result += state.indent + `end;\n`; return result; } exports.compileEnumDeclaration = compileEnumDeclaration; //# sourceMappingURL=enum.js.map