Jump to content

Module:NPVIC status: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
remove flags
Revised to take first unnamed argument as the section to transclude, so calls can be shorter
Line 2: Line 2:


function getstates(frame)
function getstates(frame)
local states = frame:expandTemplate{ title = 'section transclude', args = { frame.args['section'] } }
local states = frame:expandTemplate{ title = 'section transclude', args = { frame.args[1] } }
if states == '' then
if states == '' then
states = frame.args[1]
states = frame.args[1]
Line 31: Line 31:
function p.percent(frame)
function p.percent(frame)
local EVs = p.EVs(frame)
local EVs = p.EVs(frame)
if frame.args[1] then
if frame.args[2] then
denom = frame.args[1]
denom = frame.args[2]
else
else
denom = 538
denom = 538
end
end
if frame.args[2] then
if frame.args[3] then
places = frame.args[2]
places = frame.args[3]
else
else
places = 1
places = 1
Line 56: Line 56:
return frame:expandTemplate{ title = 'error', args = { 'Value not available when editing this section in isolation.' } }
return frame:expandTemplate{ title = 'error', args = { 'Value not available when editing this section in isolation.' } }
else
else
if frame.args[1]=='spell' then
if frame.args[2]=='spell' then
total = frame:expandTemplate{ title = 'spellnum per MOS', args = { total } }
total = frame:expandTemplate{ title = 'spellnum per MOS', args = { total } }
end
end
Line 67: Line 67:
local size = frame.args['size'] or '325px'
local size = frame.args['size'] or '325px'


if frame.args['section']=='passed' then
if frame.args[1]=='passed' then
color = 'green'
color = 'green'
elseif frame.args['section']=='pending' then
elseif frame.args[1]=='pending' then
color = 'yellow'
color = 'yellow'
end
end

Revision as of 17:46, 27 March 2023

local p = {}

function getstates(frame)
    local states = frame:expandTemplate{ title = 'section transclude', args = { frame.args[1] } }
	if states == '' then
		states = frame.args[1]
	end
	return states
end

function p.EVs(frame)
	local states = getstates(frame)
	if not states then
		return frame:expandTemplate{ title = 'error', args = { 'Value not available when editing this section in isolation.' } }
	else
		local total = 0
		for state in mw.ustring.gmatch( states, "%a%a" ) do
			seats = frame:expandTemplate{ title = 'USHRseats', args = { state } }
			if state=='DC' then seats=1 end
			if type(tonumber(seats))=='nil' then
				total = error("Unrecognized state")
				break
			else
				total = total + seats + 2
			end
		end
		return total
	end
end

function p.percent(frame)
	local EVs = p.EVs(frame)
	if frame.args[2] then
		denom = frame.args[2]
	else
		denom = 538
	end
	if frame.args[3] then
		places = frame.args[3]
	else
		places = 1
	end
	percent = frame:expandTemplate{ title = 'percent', args = { EVs, denom, places} }
	return percent
end

function p.states(frame)
	local states = getstates(frame)
	local total = 0
	for state in mw.ustring.gmatch( states, "%a%a" ) do
		if state~='DC' then
			total = total + 1
		end
	end
	if total==0 then
		return frame:expandTemplate{ title = 'error', args = { 'Value not available when editing this section in isolation.' } }
	else
		if frame.args[2]=='spell' then
			total = frame:expandTemplate{ title = 'spellnum per MOS', args = { total } }
		end
		return total
	end
end

function p.overlays(frame)
	local states = getstates(frame)
	local size = frame.args['size'] or '325px'

	if frame.args[1]=='passed' then
		color = 'green'
	elseif frame.args[1]=='pending' then
		color = 'yellow'
	end
		
	local overlays = ''
	for state in mw.ustring.gmatch( states, "%a%a" ) do
		state_overlay = '<div style=\"position: absolute; left: 0px; top: 0px\">[[File:' .. state .. ' ' .. color .. ' 21.svg|' .. size .. ']]</div>'
		overlays = overlays .. state_overlay
	end
	return overlays
end

function p.signatories(frame)
	local states = frame:expandTemplate{ title = 'section transclude', args = { 'passed' } }
	local signatories = ''
	for state in mw.ustring.gmatch( states, "%a%a" ) do
		state_name = frame:expandTemplate{ title = 'US State Abbrev', args = { state } }
		local dab = ''
		if state_name=='New York' or state_name=='Washington' then
			dab=' (state)'
		end
		signatories = signatories .. '\n* ' .. '&nbsp;[[' ..  state_name .. dab .. '|' ..  state_name .. ']]'
	end
	return signatories
end

--function p.progress_bar(frame)
--	local
--	
--end


return p