Jump to content

Module:User:Happy5214/WikiWork

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Happy5214 (talk | contribs) at 10:01, 4 May 2014 (Re-adding cell def). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}
local getArgs = require('Module:Arguments').getArgs
local math = require "Module:Math"
local round = math._precision_format

local stats, total
local top, high, mid, low
local fa, a, ga, b, c, start, stub

local function pad(number)
	return round(tostring(number), '3')
end

local function getCount(type)
	return stats[type] or 0
end

local function setup()
	top = getCount('topFA') + getCount('topA') + getCount('topGA') + getCount('topB') + getCount('topC') + getCount('topStart') + getCount('topStub')
	high = getCount('highFA') + getCount('highA') + getCount('highGA') + getCount('highB') + getCount('highC') + getCount('highStart') + getCount('highStub')
	mid = getCount('midFA') + getCount('midA') + getCount('midGA') + getCount('midB') + getCount('midC') + getCount('midStart') + getCount('midStub')
	low = getCount('lowFA') + getCount('lowA') + getCount('lowGA') + getCount('lowB') + getCount('lowC') + getCount('lowStart') + getCount('lowStub')
	fa = getCount('topFA') + getCount('highFA') + getCount('midFA') + getCount('lowFA')
	a = getCount('topA') + getCount('highA') + getCount('midA') + getCount('lowA')
	ga = getCount('topGA') + getCount('highGA') + getCount('midGA') + getCount('lowGA')
	b = getCount('topB') + getCount('highB') + getCount('midB') + getCount('lowB')
	c = getCount('topC') + getCount('highC') + getCount('midC') + getCount('lowC')
	start = getCount('topStart') + getCount('highStart') + getCount('midStart') + getCount('lowStart')
	stub = getCount('topStub') + getCount('highStub') + getCount('midStub') + getCount('lowStub')
	total = top + high + mid + low
end

local function original()
	return (a + 2*ga + 3*b + 4*c + 5*start + 6*stub) / total
end

local function importanceAdjusted()
	local topWW = 2 * (getCount('topA') + 2*getCount('topGA') + 3*getCount('topB') + 4*getCount('topC') + 5*getCount('topStart') + 6*getCount('topStub'))
	local highWW = 1.5 * (getCount('highA') + 2*getCount('highGA') + 3*getCount('highB') + 4*getCount('highC') + 5*getCount('highStart') + 6*getCount('highStub'))
	local midWW = 1 * (getCount('midA') + 2*getCount('midGA') + 3*getCount('midB') + 4*getCount('midC') + 5*getCount('midStart') + 6*getCount('midStub'))
	local lowWW = 0.5 * (getCount('lowA') + 2*getCount('lowGA') + 3*getCount('lowB') + 4*getCount('lowC') + 5*getCount('lowStart') + 6*getCount('lowStub'))
	return (topWW + highWW + midWW + lowWW) / total
end

local function newImportanceAdjusted()
	local topWW = 0.5 * (getCount('topA') + 2*getCount('topGA') + 3*getCount('topB') + 4*getCount('topC') + 5*getCount('topStart') + 6*getCount('topStub'))
	local highWW = 1 * (getCount('highA') + 2*getCount('highGA') + 3*getCount('highB') + 4*getCount('highC') + 5*getCount('highStart') + 6*getCount('highStub'))
	local midWW = 1.5 * (getCount('midA') + 2*getCount('midGA') + 3*getCount('midB') + 4*getCount('midC') + 5*getCount('midStart') + 6*getCount('midStub'))
	local lowWW = 2 * (getCount('lowA') + 2*getCount('lowGA') + 3*getCount('lowB') + 4*getCount('lowC') + 5*getCount('lowStart') + 6*getCount('lowStub'))
	return (topWW + highWW + midWW + lowWW) / total
end

local function importanceRatio()
	return (2*top + 1.5*high + 1*mid + 0.5*low) / total
end

function p._wikiwork()
	local insert = table.insert
	setup()
	local cells = {}
	local omega = original()
	insert(cells, pad(omega))
	local iota = importanceAdjusted()
	insert(cells, pad(iota))
	local nu = newImportanceAdjusted()
	insert(cells, pad(nu))
	local rho = importanceRatio()
	insert(cells, pad(rho))
	local iotaOmega = iota / omega
	insert(cells, pad(iotaOmega))
	local nuOmega = nu / omega
	insert(cells, pad(nuOmega))
	return '| ' .. table.concat(cells, ' || ')
end

function p.wikiwork(frame)
	stats = getArgs(frame)
	return p._wikiwork()
end

return p