Module:Testing

From RuneTails
Revision as of 15:01, 13 February 2025 by NES (talk | contribs)

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