typescript-to-lua
Version:
A generic TypeScript to Lua transpiler. Write your code in TypeScript and publish Lua!
33 lines • 1.94 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.tryTransformBuiltinGlobalCall = tryTransformBuiltinGlobalCall;
const lualib_1 = require("../utils/lualib");
const typescript_1 = require("../utils/typescript");
const call_1 = require("../visitors/call");
const string_1 = require("./string");
function tryTransformBuiltinGlobalCall(context, node, expressionType) {
function getParameters() {
const signature = context.checker.getResolvedSignature(node);
return (0, call_1.transformArguments)(context, node.arguments, signature);
}
const name = expressionType.symbol.name;
switch (name) {
case "SymbolConstructor":
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Symbol, node, ...getParameters());
case "NumberConstructor":
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, node, ...getParameters());
case "StringConstructor":
return (0, string_1.transformStringConstructorCall)(node, ...getParameters());
case "isNaN":
case "isFinite":
const numberParameters = (0, typescript_1.isNumberType)(context, expressionType)
? getParameters()
: [(0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.Number, undefined, ...getParameters())];
return (0, lualib_1.transformLuaLibFunction)(context, name === "isNaN" ? lualib_1.LuaLibFeature.NumberIsNaN : lualib_1.LuaLibFeature.NumberIsFinite, node, ...numberParameters);
case "parseFloat":
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseFloat, node, ...getParameters());
case "parseInt":
return (0, lualib_1.transformLuaLibFunction)(context, lualib_1.LuaLibFeature.ParseInt, node, ...getParameters());
}
}
//# sourceMappingURL=global.js.map