Module:Sandbox/Abjiklam/sandbox

local p = {}

local infobox = require('Module:Infobox').infobox local infobox_image = require('Module:InfoboxImage').InfoboxImage local br = require('Module:Separated entries').br

-- Add a book or category in the order it should appear in the infobox. -- The first element of each section is the section name. local books = { asoiaf = { "A Song of Ice and Fire", agot = "A Game of Thrones", acok = "A Clash of Kings", asos = "A Storm of Swords", affc = "A Feast for Crows", adwd = "A Dance with Dragon", twow = "The Winds of Winter", ados = "A Dream of Spring", },	todae = { "Tales of Dunk and Egg", thk = "The Hedge Knight", tss = "The Sworn Sword", tmk = "The Mystery Knight", },	other = { "Other Books", twoiaf = "The World of Ice and Fire", fab   = "Fire and Blood", tpatq = "The Princess and the Queen", trp   = "The Rogue Prince", tsotd = "The Sons of the Dragon", }, }

local function generate_arms(arms) --This function generates small coat of arms icons return infobox_image({		args = {			image = arms,			size   = '50x70px',			border = 'no',			suppressplaceholder = 'yes',		}	}) end

function p.main(frame) -- The main function cleans up and formats all the arguments before -- passing them to the Infobox module. local original_arguments = frame.args -- arguments passed to this module local infobox_arguments = {} -- arguments given to the Infobox module --   -- above (arms+name) --   local above -- name local honorific_prefix = "" local honorific_suffix = "" if original_arguments.honorific_prefix and original_arguments.honorific_prefix ~= "" then honorific_prefix = mw.html.create('span') honorific_prefix:css('font-size', '80%') :css('font-weight', 'normal') :wikitext(original_arguments.honorific_prefix) end if original_arguments.honorific_suffix and original_arguments.honorific_suffix ~= "" then honorific_suffix = mw.html.create('span') honorific_suffix:css('font-size', '80%') :css('font-weight', 'normal') :wikitext(original_arguments.honorific_suffix) end local name = br({		tostring(honorific_prefix),		original_arguments.name,		tostring(honorific_suffix),	})

-- arms -- more than 2 arms if original_arguments['arms3'] then above = mw.html.create('div') local coats_of_arms = above:tag('div') coats_of_arms:css('text-align', 'justify') :css('text-justify', 'distribute-all-lines') :css('margin-bottom', '-1em') for i=1,5 do   		local arms if i ~= 1 then arms = original_arguments['arms' .. tostring(i)] elseif original_arguments['arms1'] then arms = original_arguments['arms' .. tostring(1)] else arms = original_arguments['arms'] end if arms then coats_of_arms:wikitext(generate_arms(arms)) coats_of_arms:wikitext(" ") end end coats_of_arms:tag('span') :css('display', 'inline-block') :css('width', '100%') :css('height', '0') above:wikitext(name) -- 1 or 2 arms elseif original_arguments['arms'] or original_arguments['arms1'] then above = mw.html.create('table') above:css('width', '100%') above_row = above:tag('tr') local arms1, arms2 if original_arguments['arms1'] then arms1 = original_arguments['arms1'] else arms1 = original_arguments['arms'] end if original_arguments['arms2'] then arms2 = original_arguments['arms2'] else arms2 = arms1 end above_row:tag('td') :css('vertical-align', 'top') :css('text-align', 'left') :css('width', '50px') :wikitext(generate_arms(arms1)) above_row:tag('td') :css('vertical-align', 'middle') :css('text-align', 'center') :css('padding-bottom', '5px') :wikitext(name) above_row:tag('td') :css('vertical-align', 'top') :css('text-align', 'right') :css('width', '50px') :wikitext(generate_arms(arms2)) -- no arms else above = name end infobox_arguments.above = tostring(above) --   -- image, caption and copyright --   infobox_arguments.image = infobox_image({		args = {			image   = original_arguments.image,			size    = original_arguments.image_size,			maxsize = '300px',			sizedefault = 'frameless',			alt     = original_arguments.alt,			border  = 'yes',			suppressplaceholder = 'yes',		}    }) infobox_arguments.headerstyle = "background-color:#f8e9d0;border:none;" return infobox(infobox_arguments) end

return p