Merge pull request #15 from nixnoxus/walk_over_all_with_optional_key

add optional parameter `key` to `tubelib2.walk_over_all`
This commit is contained in:
Joachim Stolberg 2022-04-28 21:45:29 +02:00 committed by GitHub
commit a459834e63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -129,16 +129,22 @@ function tubelib2.get_mem_data(pos, key, default)
return tubelib2.get_mem(pos)[key] or default
end
function tubelib2.walk_over_all(clbk)
function tubelib2.walk_over_all(clbk, key)
local data = storage:to_table()
for block_key,sblock in pairs(data.fields) do
local block = minetest.deserialize(sblock)
for node_key,mem in pairs(block) do
if mem then
if node_key ~= "used" and node_key ~= "best_before" then
if mem and node_key ~= "used" and node_key ~= "best_before" then
if key == nil or (type(mem) == "table" and mem[key] ~= nil) then
local pos = keys_to_pos(block_key, node_key)
local node = tubelib2.get_node_lvm(pos)
clbk(pos, node, mem)
if key ~= nil then
-- only specified 'key'
clbk(pos, node, {[key] = mem[key]})
else
-- without specified 'key'
clbk(pos, node, mem)
end
end
end
end