Mô đun:Succession table monarch

local getArgs = require('Mô đun:Arguments').getArgs
local TableTools = require('Mô đun:TableTools')
local messages = mw.loadData('Mô đun:Succession table monarch/messages')

local p = {}

p.fromArgs = function(argElements)
local mainTag = mw.html.create('table')
:attr('cellspacing', '0')
:css('text-align', 'center')
:tag('tr')
:tag('th'):cssText('width: 25%; border: solid aaa; border-width: 1px 1px 1px 1px; background: B9D1FF; font-size: 105%;'):wikitext(messages.name or 'Name'):done()
:tag('th'):cssText('width: 10%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.lifespan or 'Lifespan'):done()
:tag('th'):cssText('width: 10%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.reignStart or 'Reign start'):done()
:tag('th'):cssText('width: 10%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.reignEnd or 'Reign end'):done()
:tag('th'):cssText('width: 25%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.notes or 'Notes'):done()
:tag('th'):cssText('width: 10%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.family or 'Family'):done()
:tag('th'):cssText('width: 10%; border: solid aaa; border-width: 1px 1px 1px 0px; background: B9D1FF; font-size: 105%;'):wikitext(messages.image or 'Image'):done()
:done()

for _,eachElement in ipairs(argElements) do
if eachElement.name then
local namePlainList =
if eachElement.nickname or eachElement.native then
namePlainList = mw.getCurrentFrame():expandTemplate{
title = messages.plainlistTemplateName or 'Plainlist',
args = {'\n' ..
table.concat(TableTools.compressSparseArray({
eachElement.nickname and (' ' .. tostring(mw.html.create('small'):wikitext("" .. eachElement.nickname .. ""))) or nil,
eachElement.native and (' ' .. eachElement.native) or nil
}), '\n')}
}
end
local rowTr = mainTag:tag('tr')

rowTr:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 1px; background: F0F8FF; vertical-align: middle;')
:wikitext(eachElement.name .. namePlainList)
:done()
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
:wikitext(eachElement.life)
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
:wikitext(eachElement.reignstart)
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
:wikitext(eachElement.reignend)
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
:wikitext(eachElement.notes)
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
:wikitext(eachElement.family)

local imageTd = rowTr
:tag('td')
:cssText('border: solid aaa; border-width: 0px 1px 1px 0px; background: white;')
if eachElement.image then
imageTd:tag('span')
:addClass('photo')
:wikitext()
end
end
end
return tostring(mainTag)
end

p.fromArray = function(args)
local argElements = TableTools.numData(args, true)
return p.fromArgs(argElements)
end

p.fromFrame = function(frame)
local args = getArgs(frame)
return p.fromArray(args)
end

return p