Module:Marriage Explained

------ ! This module is currently in its alpha stage and not ready for regular use. -- Please feel free to discuss improvements and propose modifications.-- ---- Notes and TODOs: -- - Currently this module is not modifying styles like Template:Marriage.-- - Date formatting logic is still needed to parse out the year.-- - Test cases are not robust.--

-- This module provides consistent formatting for common information included in-- the spouse parameter of an Infobox_person.-- It is intended to be used by Template:Marriage and not invoked directly within pages.

local getArgs = require('Module:Arguments').getArgs

function makeSet(items) local set = for _, i in ipairs(items) do set[i] = true end return setend

-- Define sets of accepted end-reasons for standard abbreviations.values_died = makeSetvalues_divorced = makeSetvalues_separated = makeSetvalues_annulled = makeSet

-- Set standard abbreviation text to be used.abbr_married = ""abbr_divorced = ""abbr_separated = ""abbr_annulled = ""

local p =

function p.main(frame) local args = getArgs(frame,) return mw.html.create:wikitext(p._main(args))end

function p._main(args) local reason_abbr = "" local marriage_info = "" local return_value = ""

local spouse_name = args[1] or "" local date_start = args[2] or "" local date_end = args[3] or "" local end_reason_raw = args["end"] or args["reason"] or "" if end_reason_raw

nil then end_reason = "" else if values_died[end_reason_raw] then end_reason = "died" elseif values_divorced[end_reason_raw] then end_reason = abbr_divorced elseif values_separated[end_reason_raw] then end_reason = abbr_separated elseif values_annulled[end_reason_raw] then end_reason = abbr_annulled else end_reason = end_reason_raw end end -- Prepare final structure and placement of marriage info (dates, end-reason) if date_start

"" and date_end

"" and end_reason

"" then -- If no dates or reason provided, the template is not useful, return nothing. -- (nothing for now, but we'll add a warning message later on to be shown in preview) return "" elseif date_start

"" and date_end

"" then marriage_info = "(" .. end_reason .. ")" elseif date_start

"" then marriage_info = "(" .. end_reason .. " " .. date_end .. ")" elseif date_end

"" and end_reason

"" then marriage_info = "(" .. abbr_married .. " " .. date_start .. ")" elseif date_end

"" then marriage_info = "(" .. abbr_married .. " " .. date_start .. "; " .. end_reason .. ")" elseif end_reason

"" then marriage_info = "(" .. abbr_married .. " " .. date_start .. "–" .. date_end .. ")" else marriage_info = "(" .. abbr_married .. " " .. date_start .. "; " .. end_reason .. " " .. date_end .. ")" end

if spouse_name

"" then -- When there is no spouse name, return only marriage info. return_value = marriage_info else return_value = spouse_name .. " " .. marriage_info end return return_valueend

return p