From 99093835a557cd04de0c37206debdcd345801199 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 20 Mar 2025 15:24:32 -0300 Subject: append numbered members when merging Overriding numbered members is not intuitive. Merging {1} and {2} should return {1,2} not {2}. --- util.lua | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) (limited to 'util.lua') diff --git a/util.lua b/util.lua index 6aa4b92..265c272 100644 --- a/util.lua +++ b/util.lua @@ -3,7 +3,7 @@ -- @author Florian Fischer -- @author git-bruh -- @license GPL-3 --- @copyright 2024 Florian Fischer +-- @copyright 2024-2025 Florian Fischer -- @copyright 2024 git-bruh local util = {} @@ -345,30 +345,25 @@ end --- Recursively merge two tables. -- This method modifies the weak table, if this is not intended make sure you -- use a deep copy of the weak table. --- The members of the strong table override members of the weak one. +-- Named members of the strong table override members of the weak one. +-- Numbered members get inserted into the weak table. -- @param weak table which's members are potentially overridden -- @param strong table which's members override ones from the weak table -- @return the merged table function util.table.merge(weak, strong) - -- merge named members for k, v in pairs(strong) do - -- potentially override the weak member if type(v) ~= 'table' then - weak[k] = v + if tonumber(k) then -- append numeric members + table.insert(weak, v) + else -- potentially override the weak member + weak[k] = v + end + else weak[k] = util.table.merge(weak[k] or {}, v) end end - -- merge numbered members - for i, v in ipairs(strong) do - -- potentially override the weak member - if type(v) ~= 'table' then - weak[i] = v - else - weak[i] = util.table.merge(weak[i] or {}, v) - end - end return weak end -- cgit v1.2.3