Module:Succession table monarch
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module depends on the following other modules: |
Implements Template:Succession table monarch
Usage
[edit]Can be called from a page like:
{{#invoke:Succession table monarch|fromFrame}}
or via the {{Succession table monarch}} template.
Also, the functions fromArray and fromArgs can be called from another module like so:
- fromArray receives the full list of arguments of the template
- fromArgs receives an array where each element is a table which contains the data of one monarch, each with the properties with the numbers removed (e.g. name instead of name1, image instead of image1
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')
:addClass('succession-table-monarch wikitable')
:css('text-align', 'center')
:tag('tr')
:tag('th'):wikitext(messages.name):done()
:tag('th'):wikitext(messages.lifespan):done()
:tag('th'):wikitext(messages.reignStart):done()
:tag('th'):wikitext(messages.reignEnd):done()
:tag('th'):wikitext(messages.notes):done()
:tag('th'):wikitext(messages.family):done()
:tag('th'):wikitext(messages.image):done()
:done()
local ubl = require('Module:List').unbulleted
for _,eachElement in ipairs(argElements) do
if eachElement.name then
local list_args = {
list_style = 'text-align: center'
}
if eachElement.nickname then
table.insert(list_args, tostring(mw.html.create('small'):tag('i'):wikitext(eachElement.nickname)))
end
if eachElement.native then
table.insert(list_args, eachElement.native)
end
local rowTr = mainTag:tag('tr')
rowTr:tag('td')
:css('vertical-align: middle;')
:wikitext(eachElement.name .. ubl(list_args))
:done()
:tag('td')
:wikitext(eachElement.life)
:tag('td')
:wikitext(eachElement.reignstart)
:tag('td')
:wikitext(eachElement.reignend)
:tag('td')
:wikitext(eachElement.notes)
:tag('td')
:wikitext(eachElement.family)
local imageTd = rowTr
:tag('td')
if eachElement.image then
imageTd:tag('span')
:addClass('photo')
:wikitext('[[File:' .. eachElement.image .. '|80px|alt=' .. (eachElement.alt or '') .. ']]')
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