Módulo:Diamante de Hodge

Fonte: Enciclopédia de conhecimento da Igreja de Deus
Saltar para a navegação Saltar para a pesquisa

A documentação para este módulo pode ser criada na página Módulo:Diamante de Hodge/doc

-- This module implements {{hodge diamond}}
local p = {}
function p.diagram(frame)
	local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
	local style = args['style'] or ''
	local width = args['width'] or '2.5em'
	local cstyle = args['cstyle'] or ''
	local caption = args['caption']
	local note = args['note']
	local entries = {}
	
	local argcount = 0
	for k, v in pairs( args ) do
								if type( k ) == 'number' then
											entries[ k ] = mw.text.trim(v)
											argcount = argcount + 1
								end
				end
				local side = math.floor(math.sqrt(argcount))
				local rows = 2*side - 1
				
				local root = mw.html.create('table')
				root
					:css('text-align', 'center')
					:cssText(style)
				
				if caption then  
					root:tag('caption'):wikitext(caption)
				end
				local c = 1    
				for i = 1,side do
					row = root:tag('tr')
					for j = 1,(side-i) do
						row:tag('td')
		end
		for k = 1,i do
			local cell = row:tag('td')
			cell
				:css('width', width)
				:cssText(cstyle)
				:wikitext(entries[c])
			if k < i then
				row:tag('td')
			else
				if i == side and note then
					row:tag('td'):wikitext(note)
				end
			end
			
			c = c + 1
		end
		for j = 1,(side-i) do
			row:tag('td')
		end
	end
	for i = 1,(side-1) do
		row = root:tag('tr')
					for j = 1,i do
						row:tag('td')
		end
		for k = 1,(side-i) do
			cell = row:tag('td')
			cell
				:css('width', width)
				:cssText(cstyle)
				:wikitext(entries[c])
			if k < (side-i) then row:tag('td') end
			c = c + 1
		end
		for j = 1,i do
						row:tag('td')
		end
	end
	return tostring(root)
end
	
return p