---@note setup code from: https://stackoverflow.com/a/30960054 local BinaryFormat = package.cpath:match("%p[\\|/]?%p(%a+)") if BinaryFormat == "dll" then function os.name() return "Windows" end elseif BinaryFormat == "so" then function os.name() return "Linux" end elseif BinaryFormat == "dylib" then function os.name() return "MacOS" end end BinaryFormat = nil Platform = { WINDOWS = "Windows", LINUX = "Linux", MACOS = "MacOS" } ---Get OS platform lua is running on function GetPlatform() return os.name() end ---Merge base module table with implementation table, overwriting base ---@param base any ---@param implementation any function MergeModules(base, implementation) for key, value in pairs(implementation) do base[key] = value end end