Module:Equipment: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 138: | Line 138: | ||
-- Fetch equipment and create divs | -- Fetch equipment and create divs | ||
makeDiv(parseItem(ret, args.head, "head", stats, nil, | makeDiv(parseItem(ret, args.head, "head", stats, nil, args.headClickable), args.headClickable == "yes") | ||
makeDiv(parseItem(ret, args.cape, "cape", stats, nil, | makeDiv(parseItem(ret, args.cape, "cape", stats, nil, args.capeClickable), args.capeClickable == "yes") | ||
makeDiv(parseItem(ret, args.neck, "neck", stats, nil, | makeDiv(parseItem(ret, args.neck, "neck", stats, nil, args.neckClickable), args.neckClickable == "yes") | ||
makeDiv(parseItem(ret, args.ammo, "ammo", stats, args.ammoquantity, | makeDiv(parseItem(ret, args.ammo, "ammo", stats, args.ammoquantity, args.ammoClickable), args.ammoClickable == "yes") | ||
makeDiv(parseItem(ret, args.weapon, "weapon", stats, args.weaponquantity, | makeDiv(parseItem(ret, args.weapon, "weapon", stats, args.weaponquantity, args.weaponClickable), args.weaponClickable == "yes") | ||
makeDiv(parseItem(ret, args.torso, "torso", stats, nil, | makeDiv(parseItem(ret, args.torso, "torso", stats, nil, args.torsoClickable), args.torsoClickable == "yes") | ||
makeDiv(parseItem(ret, args.shield, "shield", stats, nil, | makeDiv(parseItem(ret, args.shield, "shield", stats, nil, args.shieldClickable), args.shieldClickable == "yes") | ||
makeDiv(parseItem(ret, args.legs, "legs", stats, nil, | makeDiv(parseItem(ret, args.legs, "legs", stats, nil, args.legsClickable), args.legsClickable == "yes") | ||
makeDiv(parseItem(ret, args.gloves, "gloves", stats, nil, | makeDiv(parseItem(ret, args.gloves, "gloves", stats, nil, args.glovesClickable), args.glovesClickable == "yes") | ||
makeDiv(parseItem(ret, args.hands, "gloves", stats, nil, | makeDiv(parseItem(ret, args.hands, "gloves", stats, nil, args.handsClickable), args.handsClickable == "yes") | ||
makeDiv(parseItem(ret, args.boots, "boots", stats, nil, | makeDiv(parseItem(ret, args.boots, "boots", stats, nil, args.bootsClickable), args.bootsClickable == "yes") | ||
makeDiv(parseItem(ret, args.ring, "ring", stats, nil, | makeDiv(parseItem(ret, args.ring, "ring", stats, nil, args.ringClickable), args.ringClickable == "yes") | ||
if stats then | if stats then |
Revision as of 11:11, 6 May 2024
Documentation for this module may be created at Module:Equipment/doc
-- <pre>Sandbox for testing stuff. Infoked by [[User:Joeytje50/Module]]
-- Current module being tested: Module:Equipment
local p = {}
local hasc = require('Module:Paramtest').has_content
local itemstats = require('Module:FetchItemStats')
local yesno = require('Module:Yesno')
local lang = mw.language.getContentLanguage()
local GEPrice = require('Module:Exchange')._price
-- Parse item string and check if GIF icons are allowed
local function parseItem(ret, itemString, equipSlot, stats, quantity, clickableArg)
local itemString = itemString
local allowGif = false -- Set default to not allow GIF icons
local itemName = ""
local clickable = clickableArg -- Default clickable state
-- Look for a ;g at the end of the string and separate them
if hasc(itemString) then
allowGif = itemString:sub(-2) == ";g"
if allowGif then
itemName = itemString:sub(0, -3)
else
itemName = itemString or ""
end
end
-- Adjust clickable based on input arguments
if clickableArg == nil then
-- If no specific clickable argument is provided, default to false
clickable = false
elseif clickableArg == "yes" then
-- If the argument is explicitly "yes", make the item clickable
clickable = true
end
return ret, itemName, allowGif, equipSlot, stats, quantity, clickable
end
-- Formats a <div> element for items
local function makeDiv(ret, itemName, allowGif, equipSlot, stats, quantity, clickable)
local itemName = itemName
local allowGif = allowGif
local topDivClass = "equipment-" .. equipSlot
local names = mw.text.split(itemName, ";")
if #names <= 1 or names[2] == 'g' then
names[2] = itemstats.defaultVersion(names[1]) or names[1]
end
local imgType = allowGif == true and "gif" or "png"
local equipSlotText = ""
-- Check if the item name is not empty
if itemName ~= '' then
if clickable then
-- Construct a clickable link to the article about the item
equipSlotText = string.format("[[File:%s.%s|%s]]", names[1], imgType, names[2])
else
-- Construct a plain image without a link
equipSlotText = string.format("[[File:%s.%s|%s]]", names[1], imgType, names[2])
end
end
-- Create the divs
local topDiv = ret
:tag("div")
:addClass(topDivClass)
local nestedDiv = topDiv
:tag("div")
:addClass("equipment-plinkp")
:wikitext(equipSlotText)
if quantity then
local amt, quantclass = formatAmount(quantity)
nestedDiv:tag('span')
:addClass('inv-quantity-text')
:addClass(quantclass)
:wikitext(amt)
end
if stats and itemName ~= '' then
-- Add stat-related code here if needed
end
if itemName ~= '' then
topDiv:addClass("equipment-blank")
end
end
function p.main(frame)
local args = frame:getParent().args
local buttons = yesno(args.buttons, false)
local stats = yesno(args.stats, false)
local align
if args.align == "right" then
align = "equipment-right"
elseif args.align == "center" then
align = "equipment-center"
else
align = "equipment-left"
end
-- general 'equipment' class for the whole thing
align = "equipment " .. align
local tbl = mw.html.create("table"):addClass(align):tag("tr")
local ret = tbl:tag("td"):tag("div")
if stats then
stats = {
astab = 0,
aslash = 0,
acrush = 0,
amagic = 0,
arange = 0,
dstab = 0,
dslash = 0,
dcrush = 0,
dmagic = 0,
drange = 0,
str = 0,
rstr = 0,
mdmg = 0,
prayer = 0,
weight = 0,
ikods = {},
}
end
if buttons then
ret:addClass("equipment-div-buttons")
else
ret:addClass("equipment-div")
end
-- Fetch equipment and create divs
makeDiv(parseItem(ret, args.head, "head", stats, nil, args.headClickable), args.headClickable == "yes")
makeDiv(parseItem(ret, args.cape, "cape", stats, nil, args.capeClickable), args.capeClickable == "yes")
makeDiv(parseItem(ret, args.neck, "neck", stats, nil, args.neckClickable), args.neckClickable == "yes")
makeDiv(parseItem(ret, args.ammo, "ammo", stats, args.ammoquantity, args.ammoClickable), args.ammoClickable == "yes")
makeDiv(parseItem(ret, args.weapon, "weapon", stats, args.weaponquantity, args.weaponClickable), args.weaponClickable == "yes")
makeDiv(parseItem(ret, args.torso, "torso", stats, nil, args.torsoClickable), args.torsoClickable == "yes")
makeDiv(parseItem(ret, args.shield, "shield", stats, nil, args.shieldClickable), args.shieldClickable == "yes")
makeDiv(parseItem(ret, args.legs, "legs", stats, nil, args.legsClickable), args.legsClickable == "yes")
makeDiv(parseItem(ret, args.gloves, "gloves", stats, nil, args.glovesClickable), args.glovesClickable == "yes")
makeDiv(parseItem(ret, args.hands, "gloves", stats, nil, args.handsClickable), args.handsClickable == "yes")
makeDiv(parseItem(ret, args.boots, "boots", stats, nil, args.bootsClickable), args.bootsClickable == "yes")
makeDiv(parseItem(ret, args.ring, "ring", stats, nil, args.ringClickable), args.ringClickable == "yes")
if stats then
-- Add stat-related code here if needed
end
return tbl:done()
end
return p