Module:Infobox/Widget/Sponsors: Difference between revisions

From TwogPedia
mNo edit summary
mNo edit summary
 
Line 7: Line 7:
for r = 1, #results do
for r = 1, #results do
local result = results[r]
local result = results[r]
        local id = string.gsub(result.id, 'Companies/', '')
         local sponsor = mw.html.create('div')
         local sponsor = mw.html.create('div')
         :wikitext('[[Companies/' .. result.id .. '|' .. result.id .. ']]')
         :wikitext('[[Companies/' .. id .. '|' .. id .. ']]')
         if result.startRef or result.startRefName then
         if result.startRef or result.startRefName then
         local startRefName = result.startRefName or ''
         local startRefName = result.startRefName or ''

Latest revision as of 21:28, 14 February 2024

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