fix: merge_tables bug caught
This commit is contained in:
parent
eced5f2ec4
commit
a5ae8899d5
|
@ -255,6 +255,7 @@ M.merge_table = function(into, from, nodes_to_replace)
|
||||||
|
|
||||||
if type(nodes_to_replace) == "table" then
|
if type(nodes_to_replace) == "table" then
|
||||||
-- function that will be executed with loadstring
|
-- function that will be executed with loadstring
|
||||||
|
local replace_fn = function(node)
|
||||||
local base_fn = [[
|
local base_fn = [[
|
||||||
return function(table1, table2)
|
return function(table1, table2)
|
||||||
local t1, t2 = table1_node or false , table2_node or false
|
local t1, t2 = table1_node or false , table2_node or false
|
||||||
|
@ -263,11 +264,20 @@ return function(table1, table2)
|
||||||
end
|
end
|
||||||
return table1
|
return table1
|
||||||
end]]
|
end]]
|
||||||
for _, node in ipairs(nodes_to_replace) do
|
|
||||||
-- replace the _node in base_fn to actual given node value
|
-- replace the _node in base_fn to actual given node value
|
||||||
local fn = base_fn:gsub("_node", node)
|
local fn = base_fn:gsub("_node", node)
|
||||||
-- if the node if found, it is replaced, otherwise table 1 is returned
|
-- return the function created from the string base_fn
|
||||||
table1 = loadstring(fn)()(table1, table2)
|
return loadstring(fn)()(table1, table2)
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, node in ipairs(nodes_to_replace) do
|
||||||
|
-- pcall() is a poor workaround for if "['mappings']['plugin']['esc_insertmode']" 'plugin' sub-table does not exist
|
||||||
|
local ok, result = pcall(replace_fn, node)
|
||||||
|
if ok then
|
||||||
|
-- if the node is found then replace
|
||||||
|
table1 = result
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue