Documentation for this module may be created at Module:Sandbox/Tamzin/Get headings/doc

local p = {}
local getArgs = require('Module:Arguments').getArgs

function p.main(frame)
	local args = getArgs(frame)
	return p._main(args)
end

function p._main(args)
	local title = mw.title.new(args.page or args[1])
	local content = title:getContent()
	local headings = {}
	local level = args.level or args[2]
	local pattern = "(?:^|\n)(" .. (string.rep("=", level) and level or "=+") .. ")%s*([^=%s][^=][^=]-)%s*=%1"
	local matches = string.find(content, pattern)
	for i in matches do
		headings.insert(i[2])
end end