One new bit of apr "glue" to complement apr_table.get and
apr_table.set : apr_table.foreach
Index: apr_lua.c
===================================================================
--- apr_lua.c (revision 653202)
+++ apr_lua.c (working copy)
@@ -46,9 +46,30 @@
return 1;
}
+static APR_DECLARE_NONSTD(int) lua_table_foreach_iterator(void* rec,
const char* key, const char* value) {
+ int status;
+ lua_State *L = (lua_State*)rec;
+ lua_pushvalue(L, 2);
+ lua_pushstring(L, key);
+ lua_pushstring(L, value);
+ lua_call(L, 2, 1);
+ status = lua_toboolean(L, 3);
+ lua_pop(L, 1);
+ return status;
+}
+
+static int lua_table_foreach(lua_State* L) {
+ apr_table_t *t = check_apr_table(L, 1);
+ luaL_checktype(L, 2, LUA_TFUNCTION);
+ lua_settop(L, 2);
+ lua_pushboolean(L, apr_table_do(lua_table_foreach_iterator,
(void*)L, t, NULL));
+ return 1;
+}
+
static const luaL_reg lua_table_methods[] = {
{"set", lua_table_set},
{"get", lua_table_get},
+ {"foreach", lua_table_foreach},
{0, 0}
};
2008/4/30 Akins, Brian <[EMAIL PROTECTED]>:
> On 4/29/08 3:52 PM, "Maxime Petazzoni" <[EMAIL PROTECTED]> wrote:
> > So, feel free to jump in and write down some
> > ideas!
>
> Some "short term" ideas:
>
> -Interface/API to allow other modules to run Lua code:
> wombat_init(/some/lua/file), wombat_run(some_lua "handle) or something
> similar. Mod_wombat could/should (?) use this interface internally.
>
> -Allow <Lua hook>some lua code for this hook</Lua> in config.
>
> -Do Lua binding in another module(s) (mod_headers, mod_expires, and mod_mime
> look like they may be fairly easy).
>
> -More Lua "glue" with httpd/apr as well as apreq.
>
> -Other modules can hook into "initialization" hooks. Ie, wombat_loadlibs
> and push_request become hooks. There was a version I did that did this.
>
> Some longer term ideas:
>
> -Lua bindings to most core modules where it makes sense.
>
> -Ability to write "full" modules in Lua.
>
> -mod_lsp (don't laugh, we are contemplating working on this...)
>
>
> I have several itches that must be scratched in Lua/httpd. I am willing to
> help as my time permits. I have a real project coming up that will
> "require" some Lua integration, so I may as well base that on mod_wombat.
>
> --
> Brian Akins
> Chief Operations Engineer
> Turner Digital Media Technologies
>
>