Skip to content

Commit

Permalink
Allow non-string arguments for minetest.is_yes()
Browse files Browse the repository at this point in the history
  • Loading branch information
PilzAdam committed Sep 10, 2013
1 parent d820a6b commit dd5c451
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 7 deletions.
4 changes: 2 additions & 2 deletions doc/lua_api.txt
Expand Up @@ -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
-----------------------------
Expand Down
4 changes: 2 additions & 2 deletions doc/menu_lua_api.txt
Expand Up @@ -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
----------------
Expand Down
10 changes: 8 additions & 2 deletions src/script/lua_api/l_util.cpp
Expand Up @@ -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;
Expand Down
2 changes: 1 addition & 1 deletion src/script/lua_api/l_util.h
Expand Up @@ -71,7 +71,7 @@ class ModApiUtil : public ModApiBase {
// 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:
Expand Down

0 comments on commit dd5c451

Please sign in to comment.