Module:ItemCategories
Jump to navigation
Jump to search
Documentation for this module may be created at Module:ItemCategories/doc
-- this will be mw.loadData later local config = { -- Direct mappings direct = { -- Loot ["LootTier.1"] = "LootTier 1", ["LootTier.2"] = "LootTier 2", ["LootTier.3"] = "LootTier 3", ["LootTier.4"] = "LootTier 4", ["LootTier.5"] = "LootTier 5", ["LootTier.6"] = "LootTier 6", ["Loot.GreatHouse"] = "Loot from Great Houses", ["Loot.Fremen"] = "Loot from Fremen", ["Loot.OldImperial"] = "Loot from Old Imperial", ["Loot.Component"] = "Component", ["Rarity.Rare"] = "Rare", -- Armor ["Items.Clothes.HeavyArmor.Head"] = "Head", ["Items.Clothes.ScoutArmor.Head"] = "Head", ["Items.Clothes.Stillsuit.Head"] = "Head", ["Items.Clothes.Social.Head"] = "Head", ["Items.Clothes.HeavyArmor.Torso"] = "Torso", ["Items.Clothes.ScoutArmor.Torso"] = "Torso", ["Items.Clothes.Stillsuit.Torso"] = "Torso", ["Items.Clothes.Social.Torso"] = "Torso", -- This is technically Torso ["Items.Clothes.Utility"] = "Utility", ["Items.Clothes.HeavyArmor.Legs"] = "Legs", ["Items.Clothes.ScoutArmor.Legs"] = "Legs", ["Items.Clothes.Social.Legs"] = "Legs", ["Items.Clothes.HeavyArmor.Hands"] = "Hands", ["Items.Clothes.ScoutArmor.Hands"] = "Hands", ["Items.Clothes.Stillsuit.Hands"] = "Hands", ["Items.Clothes.Social.Hands"] = "Hands", ["Items.Clothes.HeavyArmor.Feet"] = "Feet", ["Items.Clothes.ScoutArmor.Feet"] = "Feet", ["Items.Clothes.Stillsuit.Feet"] = "Feet", ["Items.Clothes.Social.Feet"] = "Feet", -- Tools ["Items.Holsters.HydrationTools"] = "Hydration Tools", ["Items.Holsters.CartographyTools"] = "Cartography Tools", ["Items.Holsters.GatheringTools.Cutteray"] = "Cutteray", ["Items.Holsters.GatheringTools.Compactor"] = "Compactor", ["Items.Holsters.UtilityTools.Repair"] = "Repair", ["Items.Holsters.UtilityTools.Respawn"] = "Respawn", ["Items.Holsters.UtilityTools.Thumper"] = "Thumper", ["Items.Holsters.UtilityTools.Suspensor"] = "Suspensor", ["Items.Holsters.UtilityTools.Light"] = "Light", ["Items.Holsters.UtilityTools.Shield"] = "Shield", }, -- Partial mappings, matches the start only partial = { ["Items"] = "Items", ["Items.Schematics"] = "Schematics", -- Weapons ["Items.Holsters.RangedWeapons.Heavy"] = "Heavy Ranged Weapons", ["Items.Holsters.RangedWeapons.Light"] = "Light Ranged Weapons", ["Items.Holsters.MeleeWeapons"] = "Melee Weapons", ["Items.Ammo"] = "Ammo", ["Items.Holsters.MeleeWeapons.Sword"] = "Sword", ["Items.Holsters.MeleeWeapons.Knife"] = "Knife", ["Items.Holsters.RangedWeapons.Heavy.Flamethrower"] = "Flamethrower", ["Items.Holsters.RangedWeapons.Heavy.Lasgun"] = "Lasgun", ["Items.Holsters.RangedWeapons.Heavy.LMG"] = "LMG", ["Items.Holsters.RangedWeapons.Heavy.Pistol"] = "Pistol", ["Items.Holsters.RangedWeapons.Heavy.RocketLauncher"] = "RocketLauncher", ["Items.Holsters.RangedWeapons.Heavy.Shotgun"] = "Shotgun", ["Items.Holsters.RangedWeapons.Light.Pistol"] = "Pistol", ["Items.Holsters.RangedWeapons.Light.Rifle"] = "Rifle", ["Items.Holsters.RangedWeapons.Light.Shotgun"] = "Shotgun", ["Items.Holsters.RangedWeapons.Light.SMG"] = "SMG", -- Clothes ["Items.Clothes.ScoutArmor"] = "Light Armor", ["Items.Clothes.HeavyArmor"] = "Heavy Armor", ["Items.Clothes.Stillsuit"] = "Stillsuit", --["Items.Clothes"] = "Clothes", -- Resources ["Items.RefinedResources"] = "Refined Resources", ["Items.RawResources"] = "Raw Resources", ["Items.CraftedResources"] = "Crafted Resources", -- Tools ["Items.Holsters.BuildingTools"] = "Building Tools", } } local p = {} function p.fromItemTags(frame) local itemtags = frame.args[1] or "" local out = {} local seen = {} mw.log(itemtags) local itemtags_str = frame.args[1] or "" local itemtags = {} for tag in string.gmatch(itemtags_str, '"(.-)"') do table.insert(itemtags, tag) end for _, tag in ipairs(itemtags) do tag = mw.text.trim(tag) mw.log("checking tag: " .. tag) -- direct tag match from config local direct = config.direct[tag] if direct then seen[direct] = true mw.log("added " .. direct .. " by direct mapping with " .. tag) end -- partial match for partial, category in pairs(config.partial) do if string.sub(tag, 1, #partial) == partial then seen[category] = true mw.log("added " .. category .. " by partial match on " .. partial) end end end for cat in pairs(seen) do table.insert(out, string.format("[[Category:%s]]", cat)) end return table.concat(out, "\n") end return p