Module:Born
From Liquipedia Commons Wiki
local Born = {}
local Class = require('Module:Class')
local DateExt = require('Module:Date/Ext')
local Flags = require('Module:Flags')
function Born.born(args)
args = args or {}
local data = mw.ext.LiquipediaDB.lpdb('player', {
conditions = '[[pagename::' .. string.gsub(mw.title.getCurrentTitle().text,'%s','_') .. ']]',
query = 'birthdate, deathdate'
})
if data[1] then data = data[1] else return '' end
if type(data) == 'table' and data.birthdate ~= DateExt.defaultDate then
local function formatDate(date)
return os.date('!%B %d, %Y', tonumber(mw.getContentLanguage():formatDate('U', date))):gsub(' 0',' ')
end
if data.deathdate == DateExt.defaultDate then
if args.as then
return '(born ' .. args.as .. '; ' .. formatDate(data.birthdate) .. ')'
else
return '(born ' .. formatDate(data.birthdate) .. ')'
end
else
if args.as then
return '(' .. formatDate(data.birthdate) .. ' (' .. args.as .. ') – ' .. formatDate(data.deathdate) .. ')'
else
return '(' .. formatDate(data.birthdate) .. ' – ' .. formatDate(data.deathdate) .. ')'
end
end
end
return ''
end
function Born.getList(args)
args = args or {}
args.endyear = args.endyear or args.year
local conditions = '[[birthdate::!]] AND [[birthdate::!' .. DateExt.defaultDate .. ']]'
if args.year then
conditions = conditions .. ' AND [[birthdate::>'..args.year..'-01-01]] AND [[birthdate::<'..args.endyear..'-12-31]]'
end
local players = mw.ext.LiquipediaDB.lpdb('player', {
conditions = conditions,
query = 'id, name, pagename, nationality, birthdate, deathdate, extradata',
order = 'birthdate ASC',
limit = 5000
})
local wrapper = Born._createListHeader()
for _, player in ipairs(players) do
wrapper:node(Born._listRow(player))
end
return wrapper:allDone()
end
function Born._listRow(player)
local monthDaySortValue = tonumber(player.birthdate:sub(6, 7) .. player.birthdate:sub(9))
return mw.html.create('tr')
:tag('td')
:wikitext(tonumber(player.birthdate:sub(1,4)))
:done()
:tag('td')
:attr('data-sort-value', monthDaySortValue)
:wikitext(mw.language.new('en'):formatDate('F d', player.birthdate))
:done()
:tag('td')
:wikitext('[[' .. player.pagename .. '|' .. (player.id or player.pagename)..']]')
:done()
:tag('td')
:wikitext(Flags.Icon{flag = player.nationality})
:wikitext(' ')
:wikitext(player.name)
:allDone()
end
function Born._createListHeader()
return mw.html.create('div'):addClass('table-responsive')
:tag('table'):addClass('wikitable'):addClass('sortable')
:tag('tr')
:tag('th'):wikitext('Birth year'):done()
:tag('th'):wikitext('Month/Day'):done()
:tag('th'):wikitext('ID'):done()
:tag('th'):wikitext('Name'):done()
:done()
end
return Class.export(Born)