Module:Testing: Difference between revisions

From RuneTails
NES (talk | contribs)
No edit summary
NES (talk | contribs)
No edit summary
Line 1: Line 1:
local p = {}
local p = {}


function p.getPath(frame)
function p.getItemData(frame)
     local url = frame.args[1] or ""
     local itemName = frame.args[1] or mw.title.getCurrentTitle().text
     local path = url:match("https?://[^/]+/(.*)")  
    local result = mw.ext.getDbData({
     return path or ""
        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