X Tutup
Skip to content

Commit c407cae

Browse files
committed
Replaced lua.vm.js with fengari and updated tests.
1 parent 1522c6d commit c407cae

File tree

12 files changed

+159
-88
lines changed

12 files changed

+159
-88
lines changed

dist/lualib/typescript.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ function TS_split(str, separator)
116116
end
117117

118118
function TS_push(list, ...)
119-
for _, v in pairs({...}) do
119+
for _, v in ipairs({...}) do
120120
list[#list + 1] = v
121121
end
122122
end

package-lock.json

Lines changed: 40 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"alsatian": "^2.2.1",
3131
"codecov": "^3.0.1",
3232
"deep-equal": "^1.0.1",
33-
"lua.vm.js": "0.0.1",
33+
"fengari": "^0.1.2",
3434
"nyc": "^11.7.1",
3535
"tslint": "^5.9.1"
3636
}

src/Transpiler.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1203,7 +1203,7 @@ export class LuaTranspiler {
12031203
) {
12041204
return `local ${vars}=${value}\n`;
12051205
} else {
1206-
return `local ${vars}=unpack(${value})\n`;
1206+
return `local ${vars}=table.unpack(${value})\n`;
12071207
}
12081208
} else {
12091209
throw new TranspileError(

test/src/util.ts

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import { Expect } from "alsatian";
66
import { LuaTranspiler, TranspileError, LuaTarget } from "../../src/Transpiler";
77
import { CompilerOptions } from "../../src/CommandLineParser";
88

9-
const LuaVM = require("lua.vm.js");
9+
import {lauxlib, lua, lualib, to_luastring} from "fengari";
10+
1011
const fs = require("fs");
1112

1213
const libSource = fs.readFileSync(path.join(path.dirname(require.resolve('typescript')), 'lib.d.ts')).toString();
@@ -50,16 +51,40 @@ export function transpileFile(path: string): string {
5051
diagnostics.forEach(diagnostic => console.log(`${ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n')}`));
5152

5253
const options: ts.CompilerOptions = { dontRequireLuaLib: true };
53-
const lua = LuaTranspiler.transpileSourceFile(program.getSourceFile(path), checker, options);
54-
return lua.trim();
54+
const result = LuaTranspiler.transpileSourceFile(program.getSourceFile(path), checker, options);
55+
return result.trim();
56+
}
57+
58+
export enum LuaReturnType {
59+
String,
60+
Number,
61+
Boolean
5562
}
5663

57-
export function executeLua(lua: string, withLib = true): any {
64+
export function executeLua(luaStr: string, type: LuaReturnType = LuaReturnType.String, withLib = true): any {
5865
if (withLib) {
59-
lua = minimalTestLib + lua
66+
luaStr = minimalTestLib + luaStr;
6067
}
61-
const luavm = new LuaVM.Lua.State();
62-
return luavm.execute(lua)[0];
68+
69+
const L = lauxlib.luaL_newstate();
70+
lualib.luaL_openlibs(L);
71+
lauxlib.luaL_dostring(L, to_luastring(luaStr));
72+
73+
let result;
74+
75+
switch (type) {
76+
case LuaReturnType.String:
77+
result = lua.lua_tojsstring(L, -1);
78+
break;
79+
case LuaReturnType.Number:
80+
result = lua.lua_tonumber(L, -1);
81+
break;
82+
case LuaReturnType.Boolean:
83+
result = lua.lua_toboolean(L, -1);
84+
break;
85+
}
86+
87+
return result;
6388
}
6489

6590
export function expectCodeEqual(code1: string, code2: string) {
@@ -74,8 +99,8 @@ export function expectCodeEqual(code1: string, code2: string) {
7499
Expect(c1).toBe(c2);
75100
}
76101

77-
const lualib = fs.readFileSync("dist/lualib/typescript.lua") + "\n";
102+
const tslualib = fs.readFileSync("dist/lualib/typescript.lua") + "\n";
78103

79104
const jsonlib = fs.readFileSync("test/src/json.lua") + "\n";
80105

81-
export const minimalTestLib = lualib + jsonlib;
106+
export const minimalTestLib = tslualib + jsonlib;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
local a,b=unpack(myFunc())
1+
local a,b=table.unpack(myFunc())

test/unit/assignments.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ export class AssignmentTests {
5151
public nullAssignment(declaration: string) {
5252
const lua = util.transpileString(declaration + " return myvar;");
5353
const result = util.executeLua(lua);
54-
Expect(result).toBe(undefined);
54+
Expect(result).toBe(null);
5555
}
5656

5757
@TestCase(["a", "b"], ["e", "f"])

test/unit/conditionals.spec.ts

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export class LuaConditionalsTests {
1717
);
1818

1919
// Execute
20-
let result = util.executeLua(lua);
20+
let result = util.executeLua(lua, util.LuaReturnType.Number);
2121

2222
// Assert
2323
Expect(result).toBe(expected);
@@ -38,7 +38,7 @@ export class LuaConditionalsTests {
3838
);
3939

4040
// Execute
41-
let result = util.executeLua(lua);
41+
let result = util.executeLua(lua, util.LuaReturnType.Number);
4242

4343
// Assert
4444
Expect(result).toBe(expected);
@@ -64,7 +64,7 @@ export class LuaConditionalsTests {
6464
);
6565

6666
// Execute
67-
let result = util.executeLua(lua);
67+
let result = util.executeLua(lua, util.LuaReturnType.Number);
6868

6969
// Assert
7070
Expect(result).toBe(expected);
@@ -91,7 +91,7 @@ export class LuaConditionalsTests {
9191
);
9292

9393
// Execute
94-
let result = util.executeLua(lua);
94+
let result = util.executeLua(lua, util.LuaReturnType.Number);
9595

9696
// Assert
9797
Expect(result).toBe(expected);
@@ -122,7 +122,7 @@ export class LuaConditionalsTests {
122122
);
123123

124124
// Execute
125-
let result = util.executeLua(lua);
125+
let result = util.executeLua(lua, util.LuaReturnType.Number);
126126

127127
// Assert
128128
Expect(result).toBe(expected);
@@ -156,7 +156,7 @@ export class LuaConditionalsTests {
156156
);
157157

158158
// Execute
159-
let result = util.executeLua(lua);
159+
let result = util.executeLua(lua, util.LuaReturnType.Number);
160160

161161
// Assert
162162
Expect(result).toBe(expected);
@@ -202,7 +202,7 @@ export class LuaConditionalsTests {
202202
);
203203

204204
// Execute
205-
let result = util.executeLua(lua);
205+
let result = util.executeLua(lua, util.LuaReturnType.Number);
206206

207207
// Assert
208208
Expect(result).toBe(expected);
@@ -246,7 +246,7 @@ export class LuaConditionalsTests {
246246
);
247247

248248
// Execute
249-
let result = util.executeLua(lua);
249+
let result = util.executeLua(lua, util.LuaReturnType.Number);
250250

251251
// Assert
252252
Expect(result).toBe(expected);

test/unit/curry.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export class LuaCurryTests {
2424
);
2525

2626
// Execute
27-
let result = util.executeLua(lua);
27+
let result = util.executeLua(lua, util.LuaReturnType.Number);
2828

2929
// Assert
3030
Expect(result).toBe(x + y);

0 commit comments

Comments
 (0)
X Tutup