FANDOM


local p = {}
-- Create a table t to hold the data from Module:Appear/data
local t = mw.loadData('Module:Appear/data')
-- Create a table to see which seasons have been written and which haven't
local seasons = {}
local writeAll, writeSeason, writeEpisode, writeSidenote
 
-- Sends the arguments given to the template to the write function
-- and returns everything put together into a string
function p.main(frame)
    local text = ""
    local args = frame:getParent().args
    for i, v in ipairs(args) do
        if v ~= '' then
            if i ~= 1 then
                text = text .. '\n'
            end
            text = text .. writeAll(v)
        end
    end
    return text
end
 
-- Splits the argument into pieces and sends the right pieces to
-- writeSeason, writeEpisode, and writeSidenote
-- They are then put together and returned
writeAll = function (arg)
    local seasoncode = ""
    local episodecode = ""
    local sidenotecode = ""
    local first = arg:sub(1, 1)
    if tonumber(first) then
        seasoncode = first
        episodecode = arg:sub(1, 3)
        sidenotecode = arg:sub(4)
    elseif first == 'a' then
        seasoncode = arg:sub(4)
        episodecode = arg
    elseif first == 'i' then
        episodecode = 'intro'
    elseif first == 's' then
        seasoncode = 'short'
        episodecode = arg:sub(1, 7)
        sidenotecode = arg:sub(8)
    else
        local lowerIndex = arg:find( '%l' )
        seasoncode = 'game'
        if lowerIndex then
            episodecode = arg:sub(1, lowerIndex - 1)
            sidenotecode = arg:sub(lowerIndex)
        else
            episodecode = arg
        end
    end
    local season = writeSeason(seasoncode)
    local episode = writeEpisode(episodecode)
    local sidenote = writeSidenote(sidenotecode)
    return season .. episode .. sidenote
end
 
writeSeason = function (season)
    if not seasons[season] and t[season] then
        seasons[season] = true
        return '===' .. t[season] .. '===\n'
    else
        return ''
    end
end
 
writeEpisode = function (episode)
    return '*' .. t[episode]
end
 
writeSidenote = function (sidenote)
    if t[sidenote] then
        return ' <sup>(' .. t[sidenote] .. ')</sup>'
    else
        return ''
    end
end
 
return p
Community content is available under CC-BY-SA unless otherwise noted.

Fandom may earn an affiliate commission on sales made from links on this page.

Stream the best stories.

Fandom may earn an affiliate commission on sales made from links on this page.

Get Disney+