Jump to content

Module:Infobox election/sandbox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
skeleton
 
WIP
 
Line 2: Line 2:
local args = {}
local args = {}
local origArgs = {}
local origArgs = {}

local function notblank(v)
return (mw.text.trim(v or "") ~= "")
end


function p.infobox(frame)
function p.infobox(frame)
origArgs = frame:getParent().args
for k,v in frame:getParent().args do
for k,v in pairs(frame.args) do origArgs[k] = mw.text.trim(v) end
if notblank(v) then origArgs[k] = mw.text.trim(v) end
end
for k,v in frame.args do
if notblank(v) then origArgs[k] = mw.text.trim(v) end
end
local width = math.max(
--debug
(origArgs.map_image or origArgs.map) and (mw.ustring.match((origArgs.map_size or 300),"(%d*)")) or 0,
args = origArgs
(origArgs.map2_image or origArgs.map2) and (mw.ustring.match((origArgs.map2_size or 300),"(%d*)")) or 0,
(origArgs.map3_image or origArgs.map3) and (mw.ustring.match((origArgs.map3_size or 300),"(%d*)")) or 0,
(origArgs.map4_image or origArgs.map4) and (mw.ustring.match((origArgs.map4_size or 300),"(%d*)")) or 0
)
local pagetitle = frame:getParent() and frame:getParent():getTitle() or frame:getTitle()
args = {
child = origArgs.child or origArgs.embed,
bodyclass = origArgs.election_date and origArgs.vevent or nil,
bodystyle = "line-height:1.5em;" .. ((width > 0) and ("width:"..width.."px;") or ""),
titleclass = "summary",
titlestyle = "font-size:125%;",
title = ((origArgs.child or origArgs.embed) == yes)
and (origArgs.election_name and '<div style="background-color:#ddd; font-size:120%; font-weight:bold">'..origArgs.election_name..'</div>')
or (origArgs.election_name or (frame:getParent() and frame:getParent():getTitle() or frame:getTitle())),
datastyle = "text-align:center;",
labelstyle = "width:5em;white-space:nowrap;",
subheaderstyle = "line-height:130%;",
subheader1 = origArgs.flag_image
and (require('Module:InfoboxImage').InfoboxImage(
frame:newChild{ title = frame:getTitle(), args = {
image = origArgs.flag_image,
size = "50px",
alt = "",
link = ""
} }
) .. "<hr />")
or (require('Module:CountryData').gettable(mw.getCurrentFrame(),origArgs.country).alias and (require('Module:flag').deco(
frame:newChild{ title = frame:getTitle(), args = {
[1] = origArgs.country,
variant = origArgs.flag_year,
size = "50px"
} }
) .. "<hr />") ),
}
return require('Module:Infobox').infoboxTemplate(
outFrame = frame:newChild{ title = frame:getTitle(), args = args }
frame:newChild{ title = frame:getTitle(), args = args }
return require('Module:Infobox').infoboxTemplate(outFrame)
)
end
end

Latest revision as of 15:04, 14 March 2024

local p = {}
local args = {}
local origArgs = {}

local function notblank(v)
	return (mw.text.trim(v or "") ~= "")
end

function p.infobox(frame)
	for k,v in frame:getParent().args do
		if notblank(v) then origArgs[k] = mw.text.trim(v) end
	end
	for k,v in frame.args do
		if notblank(v) then origArgs[k] = mw.text.trim(v) end
	end
	
	local width = math.max(
		(origArgs.map_image or origArgs.map) and (mw.ustring.match((origArgs.map_size or 300),"(%d*)")) or 0,
		(origArgs.map2_image or origArgs.map2) and (mw.ustring.match((origArgs.map2_size or 300),"(%d*)")) or 0,
		(origArgs.map3_image or origArgs.map3) and (mw.ustring.match((origArgs.map3_size or 300),"(%d*)")) or 0,
		(origArgs.map4_image or origArgs.map4) and (mw.ustring.match((origArgs.map4_size or 300),"(%d*)")) or 0
	)
	local pagetitle = frame:getParent() and frame:getParent():getTitle() or frame:getTitle()
		
	args = {
		child = origArgs.child or origArgs.embed,
		bodyclass = origArgs.election_date and origArgs.vevent or nil,
		bodystyle = "line-height:1.5em;" .. ((width > 0) and ("width:"..width.."px;") or ""),
		titleclass = "summary",
		titlestyle = "font-size:125%;",
		title = ((origArgs.child or origArgs.embed) == yes) 
			and (origArgs.election_name and '<div style="background-color:#ddd; font-size:120%; font-weight:bold">'..origArgs.election_name..'</div>')
			or (origArgs.election_name or (frame:getParent() and frame:getParent():getTitle() or frame:getTitle())),
		datastyle = "text-align:center;",
		labelstyle = "width:5em;white-space:nowrap;",
		subheaderstyle = "line-height:130%;",
		subheader1 = origArgs.flag_image
			and (require('Module:InfoboxImage').InfoboxImage(
				frame:newChild{ title = frame:getTitle(), args = {
					image = origArgs.flag_image,
					size = "50px",
					alt = "",
					link = ""
				} }
			) .. "<hr />")
			or (require('Module:CountryData').gettable(mw.getCurrentFrame(),origArgs.country).alias and (require('Module:flag').deco(
				frame:newChild{ title = frame:getTitle(), args = {
					[1] = origArgs.country,
					variant = origArgs.flag_year,
					size = "50px"
				} }
			) .. "<hr />") ),
		}
	
	return require('Module:Infobox').infoboxTemplate(
		frame:newChild{ title = frame:getTitle(), args = args }
		)
end