Module:Events by year for decade

local p = {}

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("\n{{#section-h::" .. page_name .. "|".. section_name .. "}}")
		end
	end
	return ""
end

p.main = function(frame)
	frame.args = frame:getParent().args
	return p[''](frame)
end

p[''] = function(frame)
	local output = {
		frame:expandTemplate{ title = 'TOC limit', args = {3} },
		'\n==Events==\n'
	}
	local n = tonumber((frame.args[1] or '0') .. '0') or 0
	
	for i = n, n + 9 do
		if i == 0 then output[3] = '' else
			local year =  frame:expandTemplate{ title='dr', args={'y', 'y', i, 0, n < 100 and 'na' or 'n'}}
			local year2 = frame:expandTemplate{ title='dr', args={'y', 'y', i, 0, n <= 1000 and 'na' or 'n'}}
			local section = '== ' .. year .. '==\n' .. mw.text.trim(
				frame:expandTemplate{ title ='transcluded section', args = { year2 }} .. ' ' ..
				get_section(frame,year2, 'Events')) .. '\n'
			output[1 + #output] = section:gsub('==', '===')
		end
	end

	if 'Template:Events by year for decade' ~= mw.title.getCurrentTitle().fullText then
		output[13] = '[[Category:' .. n ..'s]]'
	end
	return table.concat(output)
end

return p