Module:Testing: Difference between revisions
From RuneTails
No edit summary |
No edit summary |
||
| Line 1: | Line 1: | ||
local p = {} | local p = {} | ||
function p. | function p.getItemData(frame) | ||
local | local itemName = frame.args[1] or mw.title.getCurrentTitle().text | ||
local | local result = mw.ext.getDbData({ | ||
return | 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 not result or #result == 0 then | |||
return "No data found for " .. itemName | |||
end | |||
local item = result[1] | |||
-- Set values to global frame storage so templates can access them | |||
frame:extensionTag("var", {name = "dbItemRarityName", value = item.dbItemRarityName or ""}) | |||
frame:extensionTag("var", {name = "dbItemTypeName", value = item.dbItemTypeName or ""}) | |||
frame:extensionTag("var", {name = "dbDescr", value = item.dbDescr or ""}) | |||
frame:extensionTag("var", {name = "dbSpriteURL", value = item.dbSpriteURL or ""}) | |||
frame:extensionTag("var", {name = "dbIngredientTypeName", value = item.dbIngredientTypeName or ""}) | |||
frame:extensionTag("var", {name = "dbMinPointsSell", value = item.dbMinPointsSell or ""}) | |||
frame:extensionTag("var", {name = "dbHP", value = p.formatStat(item.dbHP)}) | |||
frame:extensionTag("var", {name = "dbHunger", value = p.formatStat(item.dbHunger, true)}) | |||
return "" | |||
end | |||
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 | end | ||
return p | return p | ||
Revision as of 14:59, 13 February 2025
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
local result = mw.ext.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 not result or #result == 0 then
return "No data found for " .. itemName
end
local item = result[1]
-- Set values to global frame storage so templates can access them
frame:extensionTag("var", {name = "dbItemRarityName", value = item.dbItemRarityName or ""})
frame:extensionTag("var", {name = "dbItemTypeName", value = item.dbItemTypeName or ""})
frame:extensionTag("var", {name = "dbDescr", value = item.dbDescr or ""})
frame:extensionTag("var", {name = "dbSpriteURL", value = item.dbSpriteURL or ""})
frame:extensionTag("var", {name = "dbIngredientTypeName", value = item.dbIngredientTypeName or ""})
frame:extensionTag("var", {name = "dbMinPointsSell", value = item.dbMinPointsSell or ""})
frame:extensionTag("var", {name = "dbHP", value = p.formatStat(item.dbHP)})
frame:extensionTag("var", {name = "dbHunger", value = p.formatStat(item.dbHunger, true)})
return ""
end
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