Module:Births and deaths by year for decade
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
Related pages |
---|
Usage
[edit]{{#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