summaryrefslogtreecommitdiff
path: root/unified_inventory/group.lua
diff options
context:
space:
mode:
Diffstat (limited to 'unified_inventory/group.lua')
-rw-r--r--unified_inventory/group.lua40
1 files changed, 15 insertions, 25 deletions
diff --git a/unified_inventory/group.lua b/unified_inventory/group.lua
index 23e2587..c7e09be 100644
--- a/unified_inventory/group.lua
+++ b/unified_inventory/group.lua
@@ -2,19 +2,21 @@ local S = unified_inventory.gettext
function unified_inventory.canonical_item_spec_matcher(spec)
local specname = ItemStack(spec):get_name()
- if specname:sub(1, 6) == "group:" then
- local group_names = specname:sub(7):split(",")
+ if specname:sub(1, 6) ~= "group:" then
return function (itemname)
- local itemdef = minetest.registered_items[itemname]
- for _, group_name in ipairs(group_names) do
- if (itemdef.groups[group_name] or 0) == 0 then
- return false
- end
+ return itemname == specname
+ end
+ end
+
+ local group_names = specname:sub(7):split(",")
+ return function (itemname)
+ local itemdef = minetest.registered_items[itemname]
+ for _, group_name in ipairs(group_names) do
+ if (itemdef.groups[group_name] or 0) == 0 then
+ return false
end
- return true
end
- else
- return function (itemname) return itemname == specname end
+ return true
end
end
@@ -25,23 +27,11 @@ end
function unified_inventory.extract_groupnames(groupname)
local specname = ItemStack(groupname):get_name()
- if specname:sub(1, 6) == "group:" then
- local group_names = specname:sub(7):split(",")
- if #group_names == 1 then
- return group_names[1], 1
- end
- local s = ""
- for g=1,#group_names do
- if g > 1 then
- -- List connector
- s = s .. S(" and ")
- end
- s = s .. group_names[g]
- end
- return s, #group_names
- else
+ if specname:sub(1, 6) ~= "group:" then
return nil, 0
end
+ local group_names = specname:sub(7):split(",")
+ return table.concat(group_names, S(" and ")), #group_names
end
unified_inventory.registered_group_items = {