aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenoit Giannangeli <giann008@gmail.com>2017-04-11 10:54:49 +0200
committerBenoit Giannangeli <giann008@gmail.com>2017-04-11 11:07:40 +0200
commit40cb52853ce7a0715761504940b07d77bacf5ec4 (patch)
tree7f52b9a4de3b1da07b6c1c9bae1acc7bafcb4f81
parent4d374d77766b6f621f2194a9546521295aa528af (diff)
downloadfengari-40cb52853ce7a0715761504940b07d77bacf5ec4.tar.gz
fengari-40cb52853ce7a0715761504940b07d77bacf5ec4.tar.bz2
fengari-40cb52853ce7a0715761504940b07d77bacf5ec4.zip
Basic interactive lua cli
-rw-r--r--tests/ldblib.js7
-rw-r--r--tests/manual-tests/debug-cli.js (renamed from tests/debug-cli.js)8
-rwxr-xr-xtests/manual-tests/lua-cli.js33
3 files changed, 44 insertions, 4 deletions
diff --git a/tests/ldblib.js b/tests/ldblib.js
new file mode 100644
index 0000000..5e5c298
--- /dev/null
+++ b/tests/ldblib.js
@@ -0,0 +1,7 @@
+"use strict";
+
+const lapi = require("../src/lapi.js");
+const lauxlib = require("../src/lauxlib.js");
+const lua = require('../src/lua.js');
+const linit = require('../src/linit.js');
+
diff --git a/tests/debug-cli.js b/tests/manual-tests/debug-cli.js
index aa6847f..18dee7f 100644
--- a/tests/debug-cli.js
+++ b/tests/manual-tests/debug-cli.js
@@ -1,9 +1,9 @@
"use strict";
-const lapi = require("../src/lapi.js");
-const lauxlib = require("../src/lauxlib.js");
-const lua = require('../src/lua.js');
-const linit = require('../src/linit.js');
+const lapi = require("../../src/lapi.js");
+const lauxlib = require("../../src/lauxlib.js");
+const lua = require('../../src/lua.js');
+const linit = require('../../src/linit.js');
let luaCode = `
a = "debug me"
diff --git a/tests/manual-tests/lua-cli.js b/tests/manual-tests/lua-cli.js
new file mode 100755
index 0000000..6c7801c
--- /dev/null
+++ b/tests/manual-tests/lua-cli.js
@@ -0,0 +1,33 @@
+#!/usr/bin/env node
+"use strict";
+
+const lua = require('../../src/lua.js');
+const lapi = require('../../src/lapi.js');
+const lauxlib = require('../../src/lauxlib.js');
+const linit = require('../../src/linit.js');
+const fs = require('fs');
+const readlineSync = require('readline-sync');
+
+readlineSync.setDefaultOptions({
+ prompt: '> '
+});
+
+const L = lauxlib.luaL_newstate();
+
+linit.luaL_openlibs(L);
+
+console.log(lua.FENGARI_COPYRIGHT);
+
+for (;;) {
+ let input = readlineSync.prompt();
+
+ if (input.length === 0)
+ continue;
+
+ let buffer = lua.to_luastring(input);
+ if (lauxlib.luaL_loadbuffer(L, buffer, buffer.length, lua.to_luastring("=stdin"))
+ || lapi.lua_pcall(L, 0, 0, 0)) {
+ lauxlib.lua_writestringerror(`${lapi.lua_tojsstring(L, -1)}\n`);
+ }
+ lapi.lua_settop(L, 0); /* remove eventual returns */
+}