Jump to content

Module:Badge display

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by BoonDock (talk | contribs) at 22:00, 19 April 2023 (Change line breaks // Edit via Wikitext Extension for VSCode). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

require('strict')
local p = {}
local data = mw.loadData('Module:BadgeDisplay/data')
local getArgs = require('Module:Arguments').getArgs
local GlobalTemplateArgs = '' -- define as global (to this module) variable


function p.DisplayImage(frame)
    -- Usage from a template etc:
    -- {{#invoke:BadgeDisplay|DisplayImage
    -- | image = NameOfImage.jpg
    -- | caption = Caption for the image
    -- | description = Description of the image
    -- | float = left/right/center
    -- | width = width in pixels or other units of the table
    -- | size = size in pixels or other units, e.g. "x25px"
    -- }}

    local args = getArgs(frame)

    -- Set default values for optional parameters
    local float = args.float or 'none'
    if float == "left" then 
        float = "floatleft"
    else
        if float == "right" then
            float = "floatright"
        end
    end
    if float == "none" then float = '' end
    
    local size = args.size or 'x200px'
    local width = args.width or ''
    local code =''
    code = args[1] or '' -- Taking a risk. Set code to first unnamed param but then overwriting it if code is named
    if string.len(code) < 2 then 
        code =  args.code
    end
    if not code or '' == code then
		-- return '<span style="color:#d33">Error: missing positional parameter 1</span>'
		return '<span style="color:#d33"> (Invalid Code: <b>' .. code .. '</b> )</span> [[Category:BadgeDisplay Error]]'
	end

--	local code = code:upper() -- DO NOT DO THIS. Code is case sensitive -- Converts the first argument to uppercase
	if not data[code] then
		-- return '<span style="color:#d33">Error: invalid positional parameter 1: ' .. code .. '</span>'
		return '<span style="color:#d33"> (Code not found: <b>' .. code .. '</b> )</span> [[Category:BadgeDisplay Error]]'
	end

    -- {Code = "xx", Type = "", Description = "xx", Class="", Variation="", Image="XX", PageLink="XX",  Country="ZAR", Note="", Org="SANDF", RecipCat="" }
    -- Data from the record into local variables
    local Code = data[code].Code
    local Type = data[code].Type
    local Description = data[code].Description
    local Class = data[code].Class
    local Variation = data[code].Variation
    local Image = data[code].Image
    local PageLink = data[code].PageLink
    local Country = data[code].Country
    local Note = data[code].Note
    local Org = data[code].Org
    local caption = ''
    
   
    
    -- Build the wikitext table
    local wikitext=''
    wikitext = wikitext .. '{| class="wikitable ' .. float .. '" style="width:250px; margin:0 auto;border:none;"\n'
    caption= "[[" .. PageLink .. "|" .. Description .. "]]"
    if string.len(Type) > 1 then
        caption = caption .. "<br />(" .. Type .. ")"
    end
    wikitext = wikitext .. '|+ ' .. caption ..'\n|-\n'
    wikitext = wikitext .. '|style="text-align:center;border:none;"| [[File:' .. Image .. '|' .. size .. '|link=' .. PageLink .. ']]\n|-\n'
    wikitext = wikitext .. '|style="text-align:center;"|' -- .. Description 
    if string.len(Class) > 1 then 
        wikitext = wikitext  .. Class .. " <br />"
    end
    if string.len(Variation) > 1 then
        wikitext = wikitext  .. Variation .. " <br />"
    end
    if string.len(Note) > 1 then
        wikitext = wikitext ..  "<i>" .. Note .. "</i>"
    end
    wikitext = wikitext .. '\n|-\n'
    wikitext = wikitext .. '|}\n'
    return wikitext
end

return p