Module:Births and deaths by year for decade
Jump to navigation
Jump to search
File:Test Template Info-Icon - Version (2).svg Module documentation[view] [edit] [history] [purge]
| File:Greek lc beta icon.svg | This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| Related pages |
|---|
Usage
[edit source]{{#invoke:Births and deaths by year for decade|main|169}} displays births and deaths of the 1690s. For further details see {{Births and deaths by year for decade}}.
local p = {}
local uc = {births="Births", deaths="Deaths"}
local page_content = {}
local function get_section(frame, page_name, section_name)
if page_content[page_name] == nil then
local title = mw.title.new(page_name)
if title then
if title.redirectTarget then title = title.redirectTarget end
page_content[page_name] = title:getContent()
end
end
if page_content[page_name] then
if mw.ustring.find(page_content[page_name], "=%s*" .. section_name .. "%s*=", 1, false) then
return frame:preprocess("{{#section-h::" .. page_name .. "|".. section_name .. "}}")
end
end
return ""
end
local function transclude(frame, entry, year, article)
local s = "'''{{dr|y|y|" .. year .. "|0|{{#ifexpr: " .. year ..
" <= 100|na|n}}}}''' "
s = frame:preprocess(s) .. get_section(frame, article, uc[entry])
s = mw.ustring.gsub(s, '==+[^=]-==+%s*%c*', '')
return mw.ustring.match(s, '.*%*.*%a.+')
end
function p.main(frame)
local decade = mw.text.trim(frame.args[1] or frame:getParent().args[1] or '0')
local result = {}
local article_list = {}
local year_list = {}
if decade:sub(1, 1) == '-' then
for i = -9, (decade == '-0' and -1 or 0) do
table.insert(article_list, frame:expandTemplate {
title = "Year article",
args = { decade .. '0', tostring(i) }
})
table.insert(year_list, decade .. math.abs(i))
end
else
for i = (decade == '0' and 1 or 0), 9 do
table.insert(article_list, frame:expandTemplate {
title = "Year article",
args = { decade .. '0', tostring(i) }
})
table.insert(year_list, decade .. tostring(i))
end
end
for i, entry in ipairs({"births", "deaths"}) do
table.insert(result, '== ' .. uc[entry] .. '==')
table.insert(result, frame:expandTemplate { title = "transcluding article", args = article_list})
for i, article in ipairs(article_list) do
table.insert(result, transclude(frame, entry, year_list[i], article))
end
end
return table.concat(result, "\n")
end
return p