Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:NPVIC status

From Wikipedia, the free encyclopedia

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)
	denom = 538
	places = 1
	if frame.args[2] then denom = frame.args[2] end
	if frame.args[3] then places = frame.args[3] 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 link_target = state_name
		if state == 'DC' then
			link_target = 'Washington, D.C.'
		elseif state == 'GA' then
			link_target = 'Georgia (U.S. state)'
		elseif state == 'NY' then
			link_target = 'New York (state)'
		elseif state == 'WA' then
			link_target = 'Washington (state)'
		end
		signatories = signatories .. '\n* ' .. '&nbsp;[[' .. link_target .. '|' .. state_name .. ']]'
	end
	return signatories
end

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

return p