Disney Magic Kingdoms Wiki

The Sword in the Stone Part 3 Update has arrived! ✨
Visit this page to learn all about what's coming up in Disney Magic Kingdoms!

READ MORE

Disney Magic Kingdoms Wiki
Advertisement

Description

This module is the Lua back-end for {{Token}}, to display character token icons.


Usage

{{#invoke:CharacterToken|getToken|<parameter list>}}

For parameter details see Template:Token/doc


--[=[
--LUA script replacement for wikitext template
--
--    [[File:t-{{{1}}}{{#if:{{{2|}}}|-{{{2}}}|}}.png
--    |x25px|{{{3}}} Token|link={{{3}}} Token]]
--
--Parameters:
--    1: Token = (character,token type,count)
--            count is optional
--            Separate multiple items with exclamation mark "!"
--            if the item is blank or "&", line break "<br />"
--                  will be inserted instead.
--    2: Size in pixels
--        optional, defaults to 25
--
--The list of available tokens is kept in the module data
--
--Unknown Token is returned if Token Type is not in data.
--]=]

local p = {}

local tokenData = mw.loadData( 'Module:CharacterToken/data' )

function p.getToken(frame)
    local tArgs

    if frame == mw.getCurrentFrame() then
        fParent = frame:getParent()
        tArgs = fParent.args

        if (fParent.args[1]) then
            tArgs = fParent.args
        else
            tArgs = frame.args
        end
    else
        tArgs = frame
    end

    local token = tArgs[1] or ""
    local size = tArgs[2] or "25"
    
--[=[    if not size or size == "" then
        size = "25"
    end
--]=]
    token = mw.ustring.gsub(mw.ustring.lower(token),
                "^%s*(.-)%s*$", "%1") or ''

    local tokenFileAll = ""
    local space = ""

    for tok in mw.text.gsplit(token, "%s*!%s*") do
        if tok == "" or tok == "&" then
            tokenFileAll = tokenFileAll .. "<br />"
            space = ""
        else
            local tokenFile
            local tokenLink
            
            local cName, tokenType, count = mw.ustring.match(tok, 
                                "^([^,]-)%s*,%s*(%d+)%s*,*%s*([\/%d]*)$")
    
            if not cName then
                cName, count = mw.ustring.match(tok, "^([^,]-)%s*,%s*,*%s*([\/%d]*)$")
                if not cName then cName = tok end
            end
    
            if not tokenType or tokenType == "" then
                tokenType = "0"
            end
    
            if tokenData[cName] and tokenData[cName][tokenType] then
                if tokenData[cName]["F"] then
                    tokenFile = "[[File:t-" .. tokenData[cName]["F"]
                else
                    tokenFile = "[[File:t-" .. cName
                end
                tokenFile = mw.ustring.gsub(tokenFile, " ", "_")
                tokenLink = "|" .. tokenData[cName][tokenType]
                    .. " Token|link="
                    .. tokenData[cName][tokenType]
                    .. " Token]]"
            else
                tokenFile = "[[File:work_in_progress"
                tokenLink = "|" .. cName
                if tokenType ~= "0" then
                    tokenLink = tokenLink .. " " .. tokenType
                end
                tokenLink = tokenLink .. "|link=Work In Progress]]"
                tokenType = "0"
            end
        
            if tokenType ~= "0" then
                tokenFile = tokenFile .. "-" .. tokenType
            end
            
            tokenFileAll = tokenFileAll .. space
                .. tokenFile .. ".png|x"
                .. size
                .. "px"
                .. tokenLink
    
            if count and count ~= "" then
                tokenFileAll = tokenFileAll .. "'''" .. count .. "'''"
            end
        
            space = " "
        end
    end
    return tokenFileAll
end

return p

-- </nowiki>
-- [[Category:Lua Modules]]
Advertisement