Module:Succession table monarch

local getArgs = require('Module:Arguments').getArgs local TableTools = require('Module:TableTools') local messages = mw.loadData('Module: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