Module:Infobox/Widget/Sponsors

From TwogPedia
Revision as of 21:28, 14 February 2024 by Couchor (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation for this module may be created at Module:Infobox/Widget/Sponsors/doc

local Sponsors = {}

function Sponsors.make(results, frame)
    if type(results) == 'string' then results = Sponsors.encode(results) end
	local container = mw.html.create('div')

	for r = 1, #results do
		local result = results[r]
        local id = string.gsub(result.id, 'Companies/', '')
        local sponsor = mw.html.create('div')
        	:wikitext('[[Companies/' .. id .. '|' .. id .. ']]')
        if result.startRef or result.startRefName then
        	local startRefName = result.startRefName or ''
        	local startRef = result.startRef or ''
        	sponsor:wikitext(frame:preprocess('<ref name='.. startRefName .. '>' ..startRef.. '</ref>'))
        end
        container:node(sponsor)
    end

	return container
end

function Sponsors.encode(jsonString)
    local decodedTables = {}

    for objectString in jsonString:gmatch('{.-}') do
        local decodedTable = {}
    
        for key, value in objectString:gmatch('"(%w+)":"([^"]+)"') do
            decodedTable[key] = value
        end
    
        table.insert(decodedTables, decodedTable)
    end

    return decodedTables
end

return Sponsors