Module:Hodge diamond
Appearance
Implements {{Hodge diamond}}
local p = {}
function p.diagram(frame)
local args = (frame.args[3] ~= nil) and frame.args or frame:getParent().args
local entries = {}
local argcount = 0
for k, v in pairs( args ) do
if type( k ) == 'number' then
entries[ k ] = v
argcount = argcount + 1
end
end
local side = math.floor(math.sqrt(argcount))
local rows = 2*side - 1
local res = ''
local c = 1
for i = 1,side do
res = res .. '<tr>'
for j = 1,(side-i) do
res = res .. '<td></td>'
end
for k = 1,i do
res = res .. '<td>' .. entries[k] .. '</td>'
k = k + 1
end
for j = 1,(side-i) do
res = res .. '<td></td>'
end
res = res .. '</tr>\n'
end
for i = 1,(side-1) do
res = res .. '<tr>'
for j = 1,i do
res = res .. '<td></td>'
end
for k = 1,(side-i) do
res = res .. '<td>' .. entries[k] .. '</td>'
k = k + 1
end
for j = 1,i do
res = res .. '<td></td>'
end
res = res .. '</tr>\n'
end
return '<table>\n' .. res .. '</table>'
end
return p