ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ
mniwiki
https://mni.wikipedia.org/wiki/%EA%AF%83%EA%AF%94%EA%AF%A8%EA%AF%91%EA%AF%A3%EA%AF%8F%EA%AF%95_%EA%AF%82%EA%AF%83%EA%AF%A5%EA%AF%8F
MediaWiki 1.47.0-wmf.1
first-letter
ꯃꯦꯗꯤꯌꯥ
ꯑꯈꯟꯅꯕ
ꯋꯥ ꯍꯥꯏꯐꯝ
ꯁꯤꯖꯤꯟꯅꯔꯤꯕ
ꯁꯤꯖꯤꯟꯅꯔꯤꯕ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ
ꯋꯤꯀꯤꯄꯦꯗꯤꯌꯥ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯐꯥꯏꯜ
ꯐꯥꯏꯜ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯃꯦꯗꯤꯌꯥꯋꯤꯀꯤ
ꯃꯦꯗꯤꯌꯥꯋꯤꯀꯤ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯇꯦꯝꯄ꯭ꯂꯦꯠ
ꯇꯦꯝꯄ꯭ꯂꯦꯠ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯃꯇꯦꯡ
ꯃꯇꯦꯡ ꯋꯥ ꯍꯥꯏꯐꯝ
ꯃꯆꯥꯈꯥꯏꯕ
ꯃꯆꯥꯈꯥꯏꯕ ꯋꯥ ꯍꯥꯏꯐꯝ
TimedText
TimedText talk
Module
Module talk
Event
Event talk
ꯇꯦꯝꯄ꯭ꯂꯦꯠ:Infobox national football team
10
18409
61708
61701
2026-05-12T21:43:32Z
~2026-28766-52
40662
61708
wikitext
text/x-wiki
<noinclude>{{main other|{{#if:{{Has short description}} |<!--Do nothing--> |{{short description|none}}}}}}</noinclude>
{{infobox
| templatestyles = Infobox/mobileviewfix.css
| title = {{{Name|<includeonly>{{PAGENAMEBASE}}</includeonly>}}}
| above = {{#if:{{{date|}}}|{{{date}}}}}
| image = {{#invoke:InfoboxImage|InfoboxImage|image={{{Badge|}}}|size={{{Badge_size|}}}|sizedefault=200x150px|title=Shirt badge/Association crest}}
| label1 = [[List of national association football teams by nickname|Nickname{{pluralize from text|{{{Nickname|}}}|likely=(s)|plural=s}}]]
| data1 = {{{Nickname|}}}
| label2 = Association
| data2 = {{{Association|}}}
| label3 = Other affiliation
| data3 = {{{Other-affiliation|}}}
| label4 = Confederation
| data4 = {{{Confederation|}}}
| label5 = {{nowrap|Sub-confederation}}
| data5 = {{{Sub-confederation|}}}
| label6 = Head coach
| data6 = {{{Coach|}}}
| label7 = [[Captain (association football)|Captain]]
| data7 = {{{Captain|}}}
| label8 = Most [[Cap (sport)#Association football|caps]]
| data8 = {{{Most caps|}}}
| label9 = Top scorer
| data9 = {{{Top scorer|}}}
| label10 = Home stadium
| data10 = {{{Home Stadium|}}}
| label11 = [[List of FIFA country codes|FIFA code]]
| data11 = {{{FIFA Trigramme|}}}
| label12 = [[BSWW Beach Soccer rankings|BSWW ranking]]
| data12 = {{{BSWW Rank|}}}
| data13 = {{#if:{{{pattern_la1|}}}{{{pattern_b1|}}}{{{pattern_ra1|}}}{{{pattern_sh1|}}}{{{pattern_so1|}}}{{{leftarm1|}}}{{{body1|}}}{{{rightarm1|}}}{{{shorts1|}}}{{{socks1|}}} {{{pattern_la2|}}}{{{pattern_b2|}}}{{{pattern_ra2|}}}{{{pattern_sh2|}}}{{{pattern_so2|}}}{{{leftarm2|}}}{{{body2|}}}{{{rightarm2|}}}{{{shorts2|}}}{{{socks2|}}}{{{pattern_la3|}}}{{{pattern_b3|}}}{{{pattern_ra3|}}}{{{pattern_sh3|}}}{{{pattern_so3|}}}{{{leftarm3|}}}{{{body3|}}}{{{rightarm3|}}}{{{shorts3|}}}{{{socks3|}}}|
<tr><td style="padding: 0; background: #ffffff; color: black; text-align: center; border: 1px solid #D3D3D3;" colspan="2">
<table style="width:100%; text-align:center;">
<tr>
{{#if:{{{pattern_la1|}}}{{{pattern_b1|}}}{{{pattern_ra1|}}}{{{pattern_sh1|}}}{{{pattern_so1|}}}{{{leftarm1|}}}{{{body1|}}}{{{rightarm1|}}}{{{shorts1|}}}{{{socks1|}}}|
<td style="padding: 0">{{Football kit
| filetype = {{{filetype1|{{{filetype|png}}}}}}
| pattern_la = {{{pattern_la1|}}}
| pattern_b = {{{pattern_b1|_unknown}}}
| pattern_ra = {{{pattern_ra1|}}}
| pattern_sh = {{{pattern_sh1|}}}
| pattern_so = {{{pattern_so1|}}}
| leftarm = {{{leftarm1|}}}
| body = {{{body1|}}}
| rightarm = {{{rightarm1|}}}
| shorts = {{{shorts1|}}}
| socks = {{{socks1|}}}
| title = {{{pattern_name1|First}}} [[Kit (association football)|{{#if:{{{American|}}}|colors|colours}}]]
}}</td>
}}{{#if:{{{pattern_la2|}}}{{{pattern_b2|}}}{{{pattern_ra2|}}}{{{pattern_sh2|}}}{{{pattern_so2|}}}{{{leftarm2|}}}{{{body2|}}}{{{rightarm2|}}}{{{shorts2|}}}{{{socks2|}}}|
<td style="padding: 0">{{Football kit
| filetype = {{{filetype2|{{{filetype|png}}}}}}
| pattern_la = {{{pattern_la2|}}}
| pattern_b = {{{pattern_b2|_unknown}}}
| pattern_ra = {{{pattern_ra2|}}}
| pattern_sh = {{{pattern_sh2|}}}
| pattern_so = {{{pattern_so2|}}}
| leftarm = {{{leftarm2|}}}
| body = {{{body2|}}}
| rightarm = {{{rightarm2|}}}
| shorts = {{{shorts2|}}}
| socks = {{{socks2|}}}
| title = {{{pattern_name2|Second}}} [[Kit (association football)|{{#if:{{{American|}}}|colors|colours}}]]
}}</td>
}}{{#if:{{{pattern_la3|}}}{{{pattern_b3|}}}{{{pattern_ra3|}}}{{{pattern_sh3|}}}{{{pattern_so3|}}}{{{leftarm3|}}}{{{body3|}}}{{{rightarm3|}}}{{{shorts3|}}}{{{socks3|}}}|
<td style="padding: 0">{{Football kit
| filetype = {{{filetype3|{{{filetype|png}}}}}}
| pattern_la = {{{pattern_la3|}}}
| pattern_b = {{{pattern_b3|_unknown}}}
| pattern_ra = {{{pattern_ra3|}}}
| pattern_sh = {{{pattern_sh3|}}}
| pattern_so = {{{pattern_so3|}}}
| leftarm = {{{leftarm3|}}}
| body = {{{body3|}}}
| rightarm = {{{rightarm3|}}}
| shorts = {{{shorts3|}}}
| socks = {{{socks3|}}}
| title = {{{pattern_name3|Third}}} [[Kit (association football)|{{#if:{{{American|}}}|colors|colours}}]]
}}</td>
}}</tr>
</table></td></tr>}}
| header14 = {{#if:{{{FIFA Rank|}}}{{{FIFA max|}}}{{{FIFA min|}}}|[[FIFA {{#ifeq:{{lc:{{{type|{{{Type}}}}}}}}|women|Women's World Ranking|Men's World Ranking}}|FIFA ranking]]}}
| label15 = Current
| data15 = {{{FIFA Rank|}}}
| label16 = Highest
| data16 = {{#if:{{{FIFA max|}}}|{{{FIFA max}}} {{#if:{{{FIFA max date|}}}|({{{FIFA max date}}})}} {{#if:{{{FIFA max year|}}}|({{{FIFA max year}}})}}}}
| label17 = Lowest
| data17 = {{#if:{{{FIFA min|}}}|{{{FIFA min}}} {{#if:{{{FIFA min date|}}}|({{{FIFA min date}}})}} {{#if:{{{FIFA min year|}}}|({{{FIFA min year}}})}}}}
| header22 = {{#if:{{{First game|}}}|First international}}{{#if:{{{Only game|}}}|Only international}}
| data23 = {{{First game|{{{Only game|}}}}}}
| header24 = {{#if:{{{Last game|}}}|Last international}}
| data25 = {{{Last game|}}}
| header26 = {{#if:{{{Largest win|}}}|Biggest win}}
| data27 = {{{Largest win|}}}
| header28 = {{#if:{{{Largest loss|}}}|Biggest defeat}}
| data29 = {{{Largest loss|}}}
| header30 = {{#if:{{{World cup apps|}}}|[[FIFA {{#switch:{{lc:{{{type|{{{Type}}}}}}}}|women=Women's|beach=Beach Soccer|#default=}} World Cup|World Cup]]}}
| label31 = Appearances
| data31 = {{{World cup apps|}}} {{#if:{{{World cup first|}}}|(''first in [[{{{World cup first|}}} FIFA {{#switch:{{lc:{{{type|{{{Type}}}}}}}}|women=Women's|beach=Beach Soccer|#default=}} World Cup|{{{World cup first}}}]]'')}}
| label32 = Best result
| data32 = {{{World cup best|}}}
| header33 = {{#if: {{{Regional cup apps|}}}|{{{Regional name}}}}}
| label34 = Appearances
| data34 = {{{Regional cup apps|}}} {{#if:{{{Regional cup first|}}}|(''first in {{{Regional cup first}}}'')}}
| label35 = Best result
| data35 = {{{Regional cup best|}}}
| header36 = {{#if: {{{2ndRegional cup apps|}}}|{{{2ndRegional name}}}}}
| label37 = Appearances
| data37 = {{{2ndRegional cup apps|}}} {{#if:{{{2ndRegional cup first|}}}|(''first in {{{2ndRegional cup first}}}'')}}
| label38 = Best result
| data38 = {{{2ndRegional cup best|}}}
| header39 = {{#if: {{{3rdRegional cup apps|}}}|{{{3rdRegional name}}}}}
| label40 = Appearances
| data40 = {{{3rdRegional cup apps|}}} {{#if:{{{3rdRegional cup first|}}}|(''first in {{{3rdRegional cup first}}}'')}}
| label41 = Best result
| data41 = {{{3rdRegional cup best|}}}
| header42 = {{#if: {{{4thRegional cup apps|}}}|{{{4thRegional name}}}}}
| label43 = Appearances
| data43 = {{{4thRegional cup apps|}}} {{#if:{{{4thRegional cup first|}}}|(''first in {{{4thRegional cup first}}}'')}}
| label44 = Best result
| data44 = {{{4thRegional cup best|}}}
| header45 = {{#if: {{{Confederations cup apps|}}}|[[FIFA Confederations Cup|Confederations Cup]]}}
| label46 = Appearances
| data46 = {{{Confederations cup apps|}}} {{#if:{{{Confederations cup first|}}}|(''first in {{{Confederations cup first}}}'')}}
| label47 = Best result
| data47 = {{{Confederations cup best|}}}
| header48 = {{#if: {{{UEFAu21Champ apps|}}}|[[UEFA European Under-21 Championship|UEFA U-21 Championship]]}}
| label49 = Appearances
| data49 = {{{UEFAu21Champ apps|}}} {{#if:{{{UEFAu21Champ first|}}}|(''first in {{{UEFAu21Champ first}}}'')}}
| label50 = Best result
| data50 = {{{UEFAu21Champ best|}}}
| header51 = {{#if: {{{U20WC apps|}}}|[[FIFA U-20 {{#ifeq:{{lc:{{{type|{{{Type}}}}}}}}|women|Women's World|World}} Cup]]}}
| label52 = Appearances
| data52 = {{{U20WC apps|}}} {{#if:{{{U20WC first|}}}|(''first in {{{U20WC first}}}'')}}
| label53 = Best result
| data53 = {{{U20WC best|}}}
| header54 = {{#if: {{{U17WC apps|}}}|[[FIFA U-17 {{#ifeq:{{lc:{{{type|{{{Type}}}}}}}}|women|Women's World|World}} Cup]]}}
| label55 = Appearances
| data55 = {{{U17WC apps|}}} {{#if:{{{U17WC first|}}}|(''first in {{{U17WC first}}}'')}}
| label56 = Best result
| data56 = {{{U17WC best|}}}
| header57 = {{#if: {{{Arab cup apps|}}}|[[FIFA Arab Cup|Arab Cup]]}}
| label58 = Appearances
| data58 = {{{Arab cup apps|}}} {{#if:{{{Arab cup first|}}}|(''first in {{{Arab cup first}}}'')}}
| label59 = Best result
| data59 = {{{Arab cup best|}}}
| header60 = {{Infobox medal templates
|medals = {{{medaltemplates|}}}
|expand = {{{medaltemplates-expand|}}}
}}
| label61 = ꯋꯦꯕꯁꯥꯏꯠ
| data61 = {{{website|}}}
| belowclass = noprint
| below = {{#if:{{{Current|}}}|[[File:Soccerball current event.svg|33px|link=|alt=]] ''[[{{{Current}}}|Current season]]''}}
}}{{#invoke:Check for unknown parameters|check|unknown={{main other|[[Category:Pages using infobox national football team with unknown parameters|_VALUE_{{PAGENAME}}]]}}|preview=Page using [[Template:Infobox national football team]] with unknown parameter "_VALUE_"|ignoreblank=y| 2ndRegional cup apps | 2ndRegional cup best | 2ndRegional cup first | 2ndRegional name | 3rdRegional cup apps | 3rdRegional cup best | 3rdRegional cup first | 3rdRegional name | 4thRegional cup apps | 4thRegional cup best | 4thRegional cup first | 4thRegional name | American | Association | Badge | Badge_size | body1 | body2 | body3 | BSWW Rank | Captain | Coach | Confederation | Confederations cup apps | Confederations cup best | Confederations cup first | Current | date | Elo max | Elo max date | Elo max year | Elo min | Elo min date | Elo min year | Elo Rank | FIFA max | FIFA max date | FIFA max year | FIFA min | FIFA min date | FIFA min year | FIFA Rank | FIFA Trigramme | filetype | filetype1 | filetype2 | filetype3 | First game | Home Stadium | Largest loss | Largest win | Last game | leftarm1 | leftarm2 | leftarm3 | medaltemplates | medaltemplates-expand | Most caps | Name | Nickname | Only game | Other-affiliation | pattern_b1 | pattern_b2 | pattern_b3 | pattern_la1 | pattern_la2 | pattern_la3 | pattern_name1 | pattern_name2 | pattern_name3 | pattern_ra1 | pattern_ra2 | pattern_ra3 | pattern_sh1 | pattern_sh2 | pattern_sh3 | pattern_so1 | pattern_so2 | pattern_so3 | Regional cup apps | Regional cup best | Regional cup first | Regional name | rightarm1 | rightarm2 | rightarm3 | shorts1 | shorts2 | shorts3 | socks1 | socks2 | socks3 | Sub-confederation | Top scorer | Type | type | U17WC apps | U17WC best | U17WC first | U20WC apps | U20WC best | U20WC first | UEFAu21Champ apps | UEFAu21Champ best | UEFAu21Champ first | Upright |website | World cup apps | World cup best | World cup first }}<noinclude>{{documentation}}<!-- please place categories and language links on the documentation page, not here! --></noinclude>
1c2tbf8fbve8sezpxh3czs7tjs6frr6
Module:Person date
828
18411
61709
2026-05-12T21:49:47Z
~2026-28766-52
40662
Created page with "require("strict") local p = {} local TEMPLATES = { birth_date = "Birth date", birth_date_and_age = "Birth date and age", birth_year = "Birth year", birth_year_and_age = "Birth year and age", death_date = "Death date", death_date_text = "Death date text", death_date_and_age = "Death date and age", death_year = "Death year", death_year_and_age = "Death year and age", } local invalid_date_category = '' local tracking_category = '' local Date = require('Module:Dat..."
61709
Scribunto
text/plain
require("strict")
local p = {}
local TEMPLATES = {
birth_date = "Birth date",
birth_date_and_age = "Birth date and age",
birth_year = "Birth year",
birth_year_and_age = "Birth year and age",
death_date = "Death date",
death_date_text = "Death date text",
death_date_and_age = "Death date and age",
death_year = "Death year",
death_year_and_age = "Death year and age",
}
local invalid_date_category = ''
local tracking_category = ''
local Date = require('Module:Date')._Date
local getArgs = require('Module:Arguments').getArgs
if mw.title.getCurrentTitle():inNamespaces(0, 828, 829) then
-- Category only in namespaces: 0=article, 828=module & 829=module talk (last 2 needed for testcases)
tracking_category = '[[Category:Pages where birth or death is being automatically determined]]'
invalid_date_category = '[[Category:Pages with invalid birth or death dates]]'
end
local function check_for_invalid_date(str)
return mw.ustring.match(str, '^%?') or mw.ustring.match(str, '^%d%d%?') or mw.ustring.match(str, '^[Uu]nk')
end
local function expand_template(template, args)
return mw.getCurrentFrame():expandTemplate{title = template, args = args}
end
local function parse_date(str)
local date = Date(str)
if date then
return tostring(date.year), tostring(date.month), tostring(date.day)
end
-- TODO: Date has not been parsed. Need to work out what to do. For now, throw an error.
-- Example where this can occur: "birth_date = 22 December 1946" at [[Maurice Pasternak]].
-- There was a nonbreaking space after "22" whidh Date does not accept.
error('Module:Person_date parse_date invalid date: "' .. tostring(str) .. '"')
end
local function date_format(str)
if mw.ustring.match (str, '^%d+%s*%a+[%.]*%s*%d%d%d%d$') then
return 'df'
elseif mw.ustring.match(str, '^%a+[%.]*%s+%d+,%s*%d%d%d%d$') then
return 'mf'
else
return 'ERROR'
end
end
local function is_valid_month (str)
str = string.upper(mw.ustring.sub(str,1,1))..string.lower(mw.ustring.sub(str,2))
local months = {'Jan','Jan.','January','Feb','Feb.','February','Mar','March','Apr','Apr.','April','May','Jun','Jun.','June','Jul','Jul.','July','Aug','Aug.','August','Sep','Sept','Sep.','Sept.','September','Oct','Oct.','October','Nov','Nov','November','Dec','Dec.','December'}
for index, value in ipairs(months) do
if value == str then
return true
end
end
return false
end
local function is_month_year_only(str)
local month = mw.ustring.match(str, '^(%a+)[%.]*%s+%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_valid_date(str)
local month = mw.ustring.match (str, '^%d+%s*(%a+)[%.]*%s*%d%d%d%d$') or mw.ustring.match(str, '^(%a+)[%.]*%s+%d+,%s*%d%d%d%d$')
if month == nil then
return false
else
return is_valid_month(month)
end
end
local function is_year_only(str)
return mw.ustring.match(str, '^%d%d%d%d$')
end
local function already_has_template(str)
str = mw.ustring.gsub(str, '&[Nn][Bb][Ss][Pp];', ' ')
return mw.ustring.match(str, '<span') or mw.ustring.match(str, '<time') or mw.ustring.match(str,'%(aged%s*%d+') or mw.ustring.match(str,'%(age%s*%d+')
end
local function sanatize_date(str)
-- Sanatize leading & trailing whitespace (this caused an issue before it was implemented)
str = mw.ustring.gsub(str,'^%s*','')
str = mw.ustring.gsub(str,'%s*$','')
-- Sanatize ordinals
str = mw.ustring.gsub(str, '(%d+)st([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)rd([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)th([,%s])', '%1%2')
str = mw.ustring.gsub(str, '(%d+)nd([,%s])', '%1%2')
return str
end
local function parse_birth(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local disap_date = args['disappeared_date'] or ''
local original = birth_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
disap_date = sanatize_date(disap_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(birth_date) then
return original..invalid_date_category
end
if already_has_template(birth_date) then
return original
end
if is_valid_date(birth_date) then
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
local date = mw.ustring.sub(birth_date, 1,location+3)
local year, month, day = parse_date(date)
local format = date_format(date)
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_date_and_age, {year, month, day, [format] = 'yes'}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_date, {year, month, day, [format] = 'yes'}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_month_year_only(birth_date) then
local year = Date('1 '..birth_date):text('%Y')
local month = Date('1 '..birth_date):text('%-m')
local location = mw.ustring.find(birth_date, '%d%d%d%d')
local date = mw.ustring.sub(birth_date, 1,location+3)
local extra = mw.ustring.sub(birth_date, location+4) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {year, month}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) or is_month_year_only(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
if is_year_only(birth_date) then
local date = mw.ustring.sub(birth_date, 1, 5)
local extra = mw.ustring.sub(birth_date, 5) .. tracking_category
if death_date == '' and disap_date == '' then
return expand_template(TEMPLATES.birth_year_and_age, {date}) .. extra
elseif is_year_only(death_date) or is_valid_date(death_date) then
return expand_template(TEMPLATES.birth_year, {date}) .. extra
else
-- death_date is not a valid string (example: 'unknown')
return original
end
end
return original
end
local function parse_death(args)
local birth_date = args['birth_date'] or ''
local death_date = args['death_date'] or ''
local original = death_date
birth_date = sanatize_date(birth_date)
death_date = sanatize_date(death_date)
-- Check for bad inputs. This used to be covered by a switch statement in infoboxes
if check_for_invalid_date(death_date) then
return original..invalid_date_category
end
if already_has_template(death_date) then
return original
end
if is_valid_date(death_date) or is_month_year_only(death_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
local format = date_format(date)
if birth_date == '' then
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_text, {date}) .. extra
end
local year, month, day = parse_date(date)
return expand_template(TEMPLATES.death_date, {year, month, day, [format] = 'yes'}) .. extra
else
if is_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if is_month_year_only(death_date) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
elseif is_valid_date(birth_date) or is_month_year_only(birth_date) then
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
if (is_month_year_only(death_date)) then
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
return expand_template(TEMPLATES.death_date_and_age, {date, bd, [format] = 'yes'}) .. extra
end
end
end
if is_year_only(death_date) then
if birth_date == '' then
return expand_template(TEMPLATES.death_year, {mw.ustring.sub(death_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_year_only(birth_date) then
return expand_template(TEMPLATES.death_year_and_age, {mw.ustring.sub(death_date, 1, 5), mw.ustring.sub(birth_date, 1, 5)}) .. mw.ustring.sub(death_date, 5) .. tracking_category
else
if is_valid_date(birth_date) then
local location = mw.ustring.find(death_date, '%d%d%d%d')
local date = mw.ustring.sub(death_date, 1,location+3)
local extra = mw.ustring.sub(death_date, location+4) .. tracking_category
location = mw.ustring.find(birth_date, '%d%d%d%d')
local bd = mw.ustring.sub(birth_date, 1,location+3)
return expand_template(TEMPLATES.death_date_and_age, {date, bd}) .. extra
end
end
end
end
return original
end
function p.birth(frame)
return parse_birth(getArgs(frame, {parentFirst = true}))
end
function p.death(frame)
return parse_death(getArgs(frame, {parentFirst = true}))
end
return p
qm4tcdz8g5vkfc018ay0tu8zlfditks