diff options
author | daurnimator <quae@daurnimator.com> | 2017-04-26 23:30:30 +1000 |
---|---|---|
committer | daurnimator <quae@daurnimator.com> | 2017-05-03 18:28:22 +1000 |
commit | 9a24308b0f8bb04d533d9abae39bd7546cf92377 (patch) | |
tree | 1afc612de03c8c8fc9b4080588713806f074f577 | |
parent | 56b5adb7f3683cd9e88f8d2cabd885e49a3d2398 (diff) | |
download | fengari-9a24308b0f8bb04d533d9abae39bd7546cf92377.tar.gz fengari-9a24308b0f8bb04d533d9abae39bd7546cf92377.tar.bz2 fengari-9a24308b0f8bb04d533d9abae39bd7546cf92377.zip |
src/iolib.js: Add file:__tostring()
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | src/liolib.js | 14 |
2 files changed, 15 insertions, 1 deletions
@@ -46,7 +46,7 @@ - [ ] `file:setvbuf()` - [ ] `file:write()` - [ ] `file:__gc()` - - [ ] `file:__tostring()` + - [x] `file:__tostring()` - [ ] C API - [x] ... - [ ] lua_arith diff --git a/src/liolib.js b/src/liolib.js index 247baef..f753f91 100644 --- a/src/liolib.js +++ b/src/liolib.js @@ -12,6 +12,19 @@ const tolstream = function(L) { return lauxlib.luaL_checkudata(L, 1, lauxlib.LUA_FILEHANDLE); }; +const isclosed = function(p) { + return p.closef === null; +}; + +const f_tostring = function(L) { + let p = tolstream(L); + if (isclosed(p)) + lua.lua_pushliteral(L, "file (closed)"); + else + lua.lua_pushstring(L, lua.to_luastring(`file (${p.f.toString()})`)); + return 1; +}; + const newprefile = function(L) { let p = lua.lua_newuserdata(L); p.f = null; @@ -24,6 +37,7 @@ const iolib = { }; const flib = { + "__tostring": f_tostring }; const createmeta = function(L) { |