diff --git a/src/addons/lua_engine.cpp b/src/addons/lua_engine.cpp index 830925d1..f8fb7ae5 100644 --- a/src/addons/lua_engine.cpp +++ b/src/addons/lua_engine.cpp @@ -5955,6 +5955,26 @@ void LuaEngine::registerCoreAPI() { "function tDeleteItem(tbl, item)\n" " for i = #tbl, 1, -1 do if tbl[i] == item then table.remove(tbl, i) end end\n" "end\n" + // Mixin pattern — used by modern addons for OOP-style object creation + "function Mixin(obj, ...)\n" + " for i = 1, select('#', ...) do\n" + " local mixin = select(i, ...)\n" + " for k, v in pairs(mixin) do obj[k] = v end\n" + " end\n" + " return obj\n" + "end\n" + "function CreateFromMixins(...)\n" + " return Mixin({}, ...)\n" + "end\n" + "function CreateAndInitFromMixin(mixin, ...)\n" + " local obj = CreateFromMixins(mixin)\n" + " if obj.Init then obj:Init(...) end\n" + " return obj\n" + "end\n" + "function MergeTable(dest, src)\n" + " for k, v in pairs(src) do dest[k] = v end\n" + " return dest\n" + "end\n" // String utilities (WoW globals that alias Lua string functions) "strupper = string.upper\n" "strlower = string.lower\n"