Module:MaroScale: Difference between revisions

From MTG Wiki
Jump to navigation Jump to search
>Corveroth
(Created page with "-- Little bit of Lua for building tables for the Storm and Rabiah scales. -- Mechanics have be re-ranked in the past, and it's probably interesting to track their drift. -- Ra...")
 
>Corveroth
No edit summary
Line 6: Line 6:


function MaroScale.RowBuilder(frame)
function MaroScale.RowBuilder(frame)
local args = frame:GetParent().args -- coming from one layer up
local args = frame:getParent().args -- coming from one layer up
local name = frame.args.name
local name = frame.args.name

Revision as of 02:28, 3 December 2016

Documentation for this module may be created at Module:MaroScale/doc

-- Little bit of Lua for building tables for the Storm and Rabiah scales.
-- Mechanics have be re-ranked in the past, and it's probably interesting to track their drift.
-- Rather than force editors to track the newest one, let's see if we can't do it in code.

local MaroScale = {}

function MaroScale.RowBuilder(frame)
	local args = frame:getParent().args -- coming from one layer up
	local name = frame.args.name
	
	local highest = 0
	-- local highestDate = ""
	local ratings = {}
	string.gsub(frame.args.ratings, "{([^\}]+)}", function(a)
		local rating, refDate, refString = string.gsub(a, "(%d+),([%d%-]+),(.+)")
		table.insert(ratings, {rating = rating, refDate = refDate, refString = refString})
		if rating > highest then
			highest = rating
			-- highestDate = refDate
		end
	end)
	-- maybe later, it's not worth the effort right now
	-- table.sort(ratings, function(a,b) return a.refDate < b.refDate end)
	
	local row = mw.html.create("tr")
		:tag("td"):wikitext(name):done()
		:tag("td"):wikitext(highest):done()
		:tag("td"):tag("ul")
	for _, rating in pairs(ratings) do
		row:tag("li"):wikitext(rating.refString):done()
	end
	row:allDone()
	
	return row
end

return MaroScale