diff options
author | PilzAdam <pilzadam@minetest.net> | 2013-09-10 19:24:17 +0200 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-09-10 21:38:44 +0200 |
commit | dd5c451e0349f57657010e3f89f3310412984ba9 (patch) | |
tree | e7650524d72ae96d820e1e137871cea485b65259 | |
parent | d820a6bfd807b6d181a858f3ea8a0d0f5c2b1879 (diff) | |
download | minetest-dd5c451e0349f57657010e3f89f3310412984ba9.tar.gz minetest-dd5c451e0349f57657010e3f89f3310412984ba9.tar.bz2 minetest-dd5c451e0349f57657010e3f89f3310412984ba9.zip |
Allow non-string arguments for minetest.is_yes()
-rw-r--r-- | doc/lua_api.txt | 4 | ||||
-rw-r--r-- | doc/menu_lua_api.txt | 4 | ||||
-rw-r--r-- | src/script/lua_api/l_util.cpp | 10 | ||||
-rw-r--r-- | src/script/lua_api/l_util.h | 2 |
4 files changed, 13 insertions, 7 deletions
diff --git a/doc/lua_api.txt b/doc/lua_api.txt index ebd70ea6e..028669c62 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -1069,8 +1069,8 @@ minetest.pos_to_string({x=X,y=Y,z=Z}) -> "(X,Y,Z)" minetest.string_to_pos(string) -> position ^ Same but in reverse ^ escapes characters [ ] \ , ; that can not be used in formspecs -minetest.is_yes(string) -^ returns whether string can be interpreted as yes +minetest.is_yes(arg) +^ returns whether arg can be interpreted as yes minetest namespace reference ----------------------------- diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt index 5763f875c..ca815862e 100644 --- a/doc/menu_lua_api.txt +++ b/doc/menu_lua_api.txt @@ -182,8 +182,8 @@ string:split(separator) ^ eg. string:split("a,b", ",") == {"a","b"} string:trim() ^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar" -minetest.is_yes(string) -^ returns whether string can be interpreted as yes +minetest.is_yes(arg) +^ returns whether arg can be interpreted as yes Class reference ---------------- diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 34788accd..af9c19210 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -220,11 +220,17 @@ int ModApiUtil::l_get_password_hash(lua_State *L) return 1; } -// is_yes(string) +// is_yes(arg) int ModApiUtil::l_is_yes(lua_State *L) { NO_MAP_LOCK_REQUIRED; - std::string str = luaL_checkstring(L, 1); + + lua_getglobal(L, "tostring"); // function to be called + lua_pushvalue(L, 1); // 1st argument + lua_call(L, 1, 1); // execute function + std::string str(lua_tostring(L, -1)); // get result + lua_pop(L, 1); + bool yes = is_yes(str); lua_pushboolean(L, yes); return 1; diff --git a/src/script/lua_api/l_util.h b/src/script/lua_api/l_util.h index ae2163ec8..bb99e1562 100644 --- a/src/script/lua_api/l_util.h +++ b/src/script/lua_api/l_util.h @@ -71,7 +71,7 @@ private: // get_password_hash(name, raw_password) static int l_get_password_hash(lua_State *L); - // is_yes(string) + // is_yes(arg) static int l_is_yes(lua_State *L); public: |