Module:MaroScale: Difference between revisions

From MTG Wiki
Jump to navigation Jump to search
>Corveroth
No edit summary
>Corveroth
No edit summary
Line 15: Line 15:
string.gsub(args.ratings, "({.-})", function(a)
string.gsub(args.ratings, "({.-})", function(a)
local rating, refDate, refString = string.match(a, "(%d+),([%d%-]+),(.+)")
local rating, refDate, refString = string.match(a, "(%d+),([%d%-]+),(.+)")
table.insert(ratings, {rating = tonumber(rating), refDate = refDate, refString = refString})
rating = tonumber(rating)
table.insert(ratings, {rating = rating, refDate = refDate, refString = refString})
if rating > highest then
if rating > highest then
highest = rating
highest = rating

Revision as of 02:38, 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 = args.name
	
	local highest = 0
	-- local highestDate = ""
	local ratings = {}
	string.gsub(args.ratings, "({.-})", function(a)
		local rating, refDate, refString = string.match(a, "(%d+),([%d%-]+),(.+)")
		rating = tonumber(rating)
		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