Module:Testing
From RuneTails
Documentation for this module may be created at Module:Testing/doc
local p = {}
function p.getItemData(frame)
local itemName = frame.args[1] or mw.title.getCurrentTitle().text
-- Check if ExternalData extension exists
if not mw.ext.ExternalData then
return "Error: ExternalData extension is missing."
end
-- Retrieve database data
local result = mw.ext.ExternalData.getDBData{
db = "WikiDB",
from = "Items",
where = "ItemName = ?",
values = {itemName},
data = {
dbItemRarityName = "ItemRarityName",
dbItemTypeName = "ItemTypeName",
dbDescr = "Descr",
dbSpriteURL = "SpriteURL",
dbIngredientTypeName = "IngredientTypeName",
dbMinPointsSell = "MinPointsSell",
dbHP = "HP",
dbHunger = "Hunger"
}
}
-- If no results found, return a message
if not result or #result == 0 then
return "Error: No data found for " .. itemName
end
local item = result[1]
-- Store data using frame args so it can be accessed in templates
return string.format('<div style="display:none;" id="dbItemRarityName">%s</div>' ..
'<div style="display:none;" id="dbItemTypeName">%s</div>' ..
'<div style="display:none;" id="dbDescr">%s</div>' ..
'<div style="display:none;" id="dbSpriteURL">%s</div>' ..
'<div style="display:none;" id="dbIngredientTypeName">%s</div>' ..
'<div style="display:none;" id="dbMinPointsSell">%s</div>' ..
'<div style="display:none;" id="dbHP">%s</div>' ..
'<div style="display:none;" id="dbHunger">%s</div>',
item.dbItemRarityName or "",
item.dbItemTypeName or "",
item.dbDescr or "",
item.dbSpriteURL or "",
item.dbIngredientTypeName or "",
item.dbMinPointsSell or "",
p.formatStat(item.dbHP),
p.formatStat(item.dbHunger, true)
)
end
-- Helper function for formatting stats
function p.formatStat(value, isPercentage)
if not value or tonumber(value) == 0 then
return isPercentage and "0%" or "0"
end
local num = tonumber(value)
if num > 0 then
return isPercentage and ("+" .. num .. "%") or ("+" .. num)
else
return isPercentage and (num .. "%") or tostring(num)
end
end
return p