Difference between revisions of "Module: Infobox character/name"
From A Wiki of Ice and Fire
Line 93: | Line 93: | ||
:css('text-align', 'center') | :css('text-align', 'center') | ||
:css('padding-bottom', '5px') | :css('padding-bottom', '5px') | ||
+ | :css('line-height', '1.1em') | ||
:wikitext(name) | :wikitext(name) | ||
:done() | :done() |
Revision as of 19:47, 15 September 2022
Documentation for this module may be created at Module:Infobox character/name/doc
local getArgs = require('Module:Arguments').getArgs
local infobox_image = require('Module:InfoboxImage').InfoboxImage
local br = require('Module:Separated entries').br
local function is_empty(s)
-- This function checks whether a string is empty
return s == nil or s == ''
end
local function generate_arms(arms)
--This function generates small coat of arms icons
return infobox_image({
args = {
image = arms,
size = '50x70px',
border = 'no',
suppressplaceholder = 'no',
}
})
end
local p = {}
function p.main(frame)
local args = getArgs(frame)
local fullname = args.fullname or ""
local title = args.title or ""
local nickname = args.nickname or ""
local firstname = args.firstname or ""
local particle = args.particle or ""
local lastname = args.lastname or ""
local epithet = args.epithet or ""
local above
local core
local below
if not is_empty(firstname) then
above = title
core = nickname .. ' ' .. firstname .. ' ' .. particle .. ' ' .. lastname
below = epithet
elseif not is_empty(lastname) then
core = nickname .. ' ' .. title .. ' ' .. particle .. ' ' .. lastname
below = epithet
elseif not is_empty(nickname) then
core = nickname
below = epithet
elseif not is_empty(title) then
core = title
below = epithet
elseif not is_empty(epithet) then
core = epithet
elseif not is_empty(fullname) then
core = fullname
end
local above_span = ""
if not is_empty(above) then
above_span = mw.html.create('span')
above_span:css('font-size', '80%')
:css('font-weight', 'normal')
:wikitext(above)
end
local below_span = ""
if not is_empty(below) then
below_span = mw.html.create('span')
below_span:css('font-size', '80%')
:css('font-weight', 'normal')
:wikitext(below)
end
local name = br({
tostring(above_span),
core,
tostring(below_span),
})
local complete_name
-- The module looks different based on the number of arms to display
-- 1) One or two arms
if args.arms or args.arms1 then
local arms1 = args.arms1 or args.arms
local arms2 = args.arms2 or arms1
complete_name = mw.html.create('table')
complete_name:css('width', '100%')
:tag('tr'):tag('td'):css('vertical-align', 'top')
:css('text-align', 'left')
:css('width', '50px')
:wikitext(generate_arms(arms1))
:done()
:tag('td'):css('vertical-align', 'middle')
:css('text-align', 'center')
:css('padding-bottom', '5px')
:css('line-height', '1.1em')
:wikitext(name)
:done()
:tag('td'):css('vertical-align', 'top')
:css('text-align', 'right')
:css('width', '50px')
:wikitext(generate_arms(arms2))
-- 2) No arms
else
complete_name = name
end
return tostring(complete_name)
end
return p