using System.Linq; using System.Reflection; using NLua; namespace BizHawk.Client.Common { public static class LuaHelper { public static LuaTable ToLuaTable(Lua lua, object obj) { var table = lua.NewTable(); var type = obj.GetType(); var methods = type.GetMethods(); foreach (var method in methods) { if (method.IsPublic) { string luaName = ""; // Empty will default to the actual method name; var luaMethodAttr = (LuaMethodAttribute)method.GetCustomAttributes(typeof(LuaMethodAttribute)).FirstOrDefault(); if (luaMethodAttr != null) { luaName = luaMethodAttr.Name; } table[method.Name] = lua.RegisterFunction(luaName, obj, method); } } return table; } } }