[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Documentation of Lua modules at https://github.com/arcapos/
- From: Sean Conner <sean@...>
- Date: Fri, 8 May 2020 05:04:50 -0400
It was thus said that the Great Marc Balmer once stated:
> Many of the Lua modules we wrote from scratch or adapted from existing
> software are published as open source software on
> https://github.com/arcapos/ <https://github.com/arcapos/>. They are all
> maintained and in wide use in our commercial products (mostly point of
> sale and online systems). They lacked, however, documentation in most
> cases.
I'm reading the code for UUID: https://github.com/arcapos/luauuid/blob/master/luauuid.c
and I was struck by an odd choice. The code goes:
struct luaL_Reg uuid_methods[] = {
{ "clear" , lua_uuid_clear },
{ "compare" , lua_uuid_compare },
...
};
if (luaL_newmetatable(L,UUID_METATABLE)) {
luaL_setfuncs(L,uuid_methods, 0);
...
lua_pushliteral(L,"__eq");
lua_pushcfunction(L,lua_uuid_equal);
lua_settable(L,-3);
...
}
Why not just list the metamethod functions in uuid_methods[]?
struct luaL_Reg uuid_methods[] = {
{ "__eq" , lua_uuid_equal },
{ "__lt" , lua_uuid_less },
{ "__le" , lua_uuid_less_or_equal },
{ "__gc" , lua_uuid_clear },
{ "__tostring" , lua_uuid_unparse },
{ "__concat" , lua_uuid_concat },
{ "__len" , lua_uuid_length },
{ "clear" , lua_uuid_clear },
{ "compare" , lua_uuid_compare },
...
};
Saves some code. You still have to push the __index and __metatable
fields, but the functions can be set along with the other functions.
And because it hurts me to have to type
syslog('warning',string.format("Unit %d is at %s",unit,status))
you can have the syslog function call format for you:
static int
unix_syslog(lua_State *L)
{
luaL_checktype(L,1,LUA_TSTRING);
lua_getfield(L,2,"format");
lua_insert(L,2);
lua_call(L,lua_gettop(L) - 2,1);
syslog(priorities[luaL_checkoption(L,1,NULL,priority_names)],"%s",lua_tostring(L,-1));
return 0;
}
> fwiw, I have put the documentation of these modules online at
> https://lua.msys.ch/ <https://lua.msys.ch/>, our microsite for Lua related
> stuff. Also on this site you will find a work in progress, the "Lua
> Integration Guide", where we try to collect and share our experiences
> while integrating Lua in existing software, write Lua bindings to existing
> libraries etc. We put it online in the hope it is helpful for some folks.
Very cool!
-spc
_______________________________________________
lua-l mailing list -- lua-l@lists.lua.org
To unsubscribe send an email to lua-l-leave@lists.lua.org