Module:User:PiRSquared17/sandbox

Code

local grid = [[
wwwwwwwwwwwwwwwwrrrrrrrrwwwwwwwwwwwwwwww
wwwwwwwwwwwwrrrrrrrrrrrrrrrrwwwwwwwwwwww
wwwwwwwwwwrrrrrrrrrrrrrrrrrrrrwwwwwwwwww
wwwwwwwwwrrrrrrrrrrrrrrrrrrrrrrwwwwwwwww
wwwwwwwrrrrrrrrrrrrwwrrrrrrrrrrrrwwwwwww
wwwwwwrrrrrrrrwwwwwwwwwwwwrrrrrrrrwwwwww
wwwwwrrrrrrrwwwwwwwwwwwwwwwwrrrrrrrwwwww
wwwwrrrrrrrwwwwwwggwgggggwwwwrrrrrrrwwww
wwwwrrrrrrwwwwwwgwwwwgggggwwwwrrrrrrwwww
wwwwwrrrrwwwgwgwwwgggwwgggwgwwwrrrrwwwww
wwwwwwwrwwwgwwwwwggggggwwwwggwwwrwwwwwww
wwwwwwwwwwwwwgggwgggggggwwggggwwwwwwwwww
wwwwwwwwwggwggggwgggggggwgwggggwwwwwwwww
wbbwwwwwgggwgggggwggggwwgggwggggwwwwwbbw
wbbbbwwwggwggggggwgggwwggggwggggwwwbbbbw
wbbbbwwgggwgggggggwwwgggggggwggwwwwbbbbw
bbbbbwwgggwggggggwwgggggggggwgwggwwbbbbb
bbbbbwwwgwwggwwwwgwggggggggggwgggwwbbbbb
bbbbbwwggwwwwggggggwggggggggwwgggwwbbbbb
bbbbwwwgggwggggggggwgggggggwgwgggwwwbbbb
bbbbwwwgggwgggggggggwgggggwggwgggwwwbbbb
bbbbbwwgggwgggggggggwgggwwgggwgggwwbbbbb
bbbbbwwgggwggggggggggwwwgggggwgggwwbbbbb
bbbbbwwggggwggggggggwwgggggggwggwwwbbbbb
wbbbbwwggggwgggggwwwgwgggggggwgwwwwbbbbw
wbbbbwwwwwwwwwwwggggggwggggggwwgwwwbbbbw
wbbbbbwwggggwgggggggggwgggggwwggwwbbbbbw
wbbbbbwwwggggwgggggggggwggwwwggwwwbbbbbw
wwbbbbbwwwggggwggggggggwwwgwwgwwwbbbbbww
wwbbbbbbwwwggggwwgggggwwwggwgwwwbbbbbbww
wwwbbbbbbwwwgggggwwwwgggwgwgwwwbbbbbbwww
wwwwbbbbbbwwwwwwwwgwwwggwwwwwwbbbbbbwwww
wwwwbbbbbbbwwwwwgggggggwwwwwwbbbbbbbwwww
wwwwwbbbbbbbwwwwwwwwwwwwwwwwbbbbbbbwwwww
wwwwwwbbbbbbbbwwwwwwwwwwwwbbbbbbbbwwwwww
wwwwwwwbbbbbbbbbbbwwwwbbbbbbbbbbbwwwwwww
wwwwwwwwwbbbbbbbbbwwwwbbbbbbbbbwwwwwwwww
wwwwwwwwwwbbbbbbbbwwwwbbbbbbbbwwwwwwwwww
wwwwwwwwwwwwbbbbbbwwwwbbbbbbwwwwwwwwwwww
wwwwwwwwwwwwwwwwbbwwwwbbwwwwwwwwwwwwwwww
]]

local p = {}

local function formatRow( frame, row, num )
	local result = '\n|-'
	local i = 0
	local j = num * string.len(row)
	local images = mw.loadData( 'Module:User:PiRSquared17/images' )


	row:gsub("[rgbw]", function(c)
		-- % #images[c] does not work for some reason
		local im = images[c][j]
		if im == nil then
			j = 1
			im = images[c][j]
		else
			j = j + 1
		end
		result = result .. '\n|[[File:' .. im .. '|20px]]'
		i = i + 1
	end)

	return result
end

function p.main( frame )
	local result = ''
	local i = 0
	for line in grid:gmatch("[rgbw]+") do
		result = result .. formatRow( frame, line, i )
		i = i + 1
	end
	return result
end

return p