Module:GuyPerfect

-- Mapping of game codes to full game names local GAMES = { S = "Splatoon", S2 = "Splatoon 2" }

-- Produces a parameter row for an infobox function ParamRow(color, label, content)

-- Outer label container, styles the left vertical edge local ret = ""

-- Inner label container, styles the horizontal edges and background ret = ret .. ""

-- Parameter contents return ret .. label .. "  " .. content .. " " end

-- Produces an image and a link for a parameter row function ParamImageLink(filename, link, opacity) local img = "" if opacity then img = "" .. img .. " "   end return img .. "" .. link .. "" end

return {

-- Gear infobox gear = function(frame) local color = frame:expandTemplate { title = "SiteColor", args = { GAMES[frame.args.game] } }

-- Outer container local ret = ""

-- Inner client area ret = ret .. ""

-- Name ret = ret .. "" .. frame.args.name .. " "

-- Image ret = ret .. "[[File:" .. frame.args.game ..             "_Gear_" .. frame.args.category .. "_" .. frame.args.name ..             ".png|128x128px]] "

-- Parameters ret = ret .. ""

-- Category row if frame.args.category then ret = ret .. ParamRow(color, "Category",               ParamImageLink( "S2_Icon_" .. frame.args.category .. ".png", frame.args.category, 0.5)           )        end

-- Brand row if frame.args.brand then ret = ret .. ParamRow(color, "Brand",               ParamImageLink( frame.args.game .. "_Brand_" .. frame.args.brand .. ".png", frame.args.brand )           )        end

-- Ability row if frame.args.ability then ret = ret .. ParamRow(color, "Ability",               ParamImageLink( frame.args.game .. "_Ability_" .. frame.args.ability .. ".png", frame.args.ability )           )        end

ret = ret .. "  "        return ret end }