From b4c7a0ed268701d1561d7818f6e69ac7cd11991e Mon Sep 17 00:00:00 2001 From: nixnoxus Date: Tue, 26 Apr 2022 18:21:44 +0200 Subject: [PATCH] add optional parameter `key` to tubelib2.walk_over_all --- storage.lua | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/storage.lua b/storage.lua index b41657c..6a88bd0 100644 --- a/storage.lua +++ b/storage.lua @@ -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