Module:Dashboard entry

local p = {}

local plain = require("Module:Plain text")._main

function p.main(frame)

local page = frame.args[1]

local pipe = frame.args[2]

local content = mw.title.new(page):getContent()

-- Unfortunately, the bot that this is replacing uses "prop=sections", which isn't accessible to Lua.

-- Therefore, we have to parse the page manuallly

local sections = content:gmatch("\n== *([^=]+) *==")

local count = 0

local sect

-- copy array to table so it can be iterated in reverse

local secttable = {}

for sect in sections do

secttable[#secttable + 1] = sect

end

local plural, declutter

if #secttable < 3 then

declutter = "|class="

if #secttable == 1 then

plural = ""

else

plural = "s"

end

else

plural = "s"

declutter = ""

end

local output = string.format("{{Dashboard grouping%s|1=%s (%s thread%s)

Most recent:",

declutter, page, pipe, #secttable, plural)

local count = 0

for i = #secttable, 1, -1 do

sect = frame:preprocess(secttable[i])

output = output .. string.format("\n* %s", page, mw.uri.anchorEncode(sect), plain(sect))

count = count + 1

if count == 3 then

output = output .. "\n

}}\n
"

end

end

if count < 3 then

output = output .. "

}} {{end}}"

else

output = output .. "

\n{{end}}"

end

return frame:preprocess(output)

end

return p