Module: Infobox character/name: Difference between revisions
From A Wiki of Ice and Fire
Created page with "local getArgs = require('Module:Arguments').getArgs local infobox_image = require('Module:InfoboxImage').InfoboxImage local br = require('Module:Separated entries').br local s..." |
No edit summary |
||
| Line 2: | Line 2: | ||
local infobox_image = require('Module:InfoboxImage').InfoboxImage | local infobox_image = require('Module:InfoboxImage').InfoboxImage | ||
local br = require('Module:Separated entries').br | local br = require('Module:Separated entries').br | ||
local function is_empty(s) | local function is_empty(s) | ||
| Line 39: | Line 38: | ||
if not is_empty(firstname) then | if not is_empty(firstname) then | ||
above = title | above = title | ||
core = | core = nickname .. ' ' .. firstname .. ' ' .. particle .. ' ' .. lastname | ||
below = epithet | below = epithet | ||
elseif not is_empty(lastname) then | elseif not is_empty(lastname) then | ||
core = | core = nickname .. ' ' .. title .. ' ' .. particle .. ' ' .. lastname | ||
below = epithet | below = epithet | ||
elseif not is_empty(nickname) then | elseif not is_empty(nickname) then | ||
Revision as of 18:05, 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
local title = args.title
local nickname = args.nickname
local firstname = args.firstname
local particle = args.particle
local lastname = args.lastname
local epithet = args.epithet
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(title) 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(above)
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) Between 3 and 5 arms
if (args.arms or args.arms1) and args.arms2 and args.arms3 then
complete_name = mw.html.create('div')
complete_name:css('text-align', 'justify')
:css('text-justify', 'distribute-all-lines')
for i=1,5 do
local arms
if i ~= 1 then
arms = args['arms' .. tostring(i)]
else
arms = args.arms1 or args.arms
end
if arms then
above:wikitext(generate_arms(arms))
:wikitext(" ")
end
end
complete_name:tag('span'):css('display', 'inline-block')
:css('width', '100%')
:css('text-align', 'center')
:wikitext(name)
-- 2) One or 2 arms
elseif 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')
:wikitext(name)
:done()
:tag('td'):css('vertical-align', 'top')
:css('text-align', 'right')
:css('width', '50px')
:wikitext(generate_arms(arms2))
-- 3) No arms
else
complete_name = name
end
return tostring(complete_name)
end
return p