Module:Top 25 report explained

local p = require('strict')local Date = require('Module:Date')._Date

local function range(date) local date2 = date + 6 if date2:text("%Y") ~= date:text("%Y") then return date:text("%B %-d, %Y") .. " to " .. date2:text("%B %-d, %Y") else if not (date2:text("%B")

date:text("%B")) then return date:text("%B %-d") .. " to " .. date2:text("%B %-d, %Y") else return date:text("%B %-d") .. " to " .. date2:text("%-d, %Y") end endend

local function line(date) local link = "" .. range .. "" return linkend

local function userLink(username) return string.format("%s", username, username)end

p.list = function(frame) local text = "This article has been viewed enough times in a single week to appear in the Top 25 Report"

frame = frame:getParent local args = frame.args local list =

local date local isUntil = false local errors =

for parameter, dateStr in pairs(frame.args) do dateStr = mw.text.trim(dateStr) if string.lower(dateStr)

"until" then isUntil = true elseif parameter

"collapse" then -- Ignore the collapse parameter elseif parameter

"ranks" then -- Ignore the parameter ranks used by capsulebot. else local index = string.find(dateStr,'(',1,true) local place = "" if index then place = string.sub(dateStr,index+1,-2) dateStr = string.sub(dateStr,0,index-1) end local newDate = Date(dateStr) if newDate

nil then table.insert(errors, dateStr) else if isUntil then isUntil = false date = date + 7 while date < newDate do table.insert(list, line(date)) date = date + 7 end end date = newDate local entry = line(date) if place ~= "" then entry = entry .. " (" .. place .. ")" end table.insert(list, entry) end end end local count = #list list.style = "display:inline-block" list = require("Module:List").makeList("horizontal", list)

if count

0 then text = text .. "." text = text .. list elseif count

1 then list = " The week in which this happened: " .. list text = text .. "." text = text .. list elseif (args["collapse"]

"yes" or (args["collapse"]

nil and count >= 10)) then text = text .. " " .. tostring(count) .. " times." text = '

' .. text .. ' The weeks in which this happened:

'.. list .. '

' else list = " The weeks in which this happened: " .. list text = text .. " " .. tostring(count) .. " times." text = text .. list end

if mw.title.getCurrentTitle.namespace

1 then text = text .. "" end if #errors > 0 then text = text .. "\n\n

The following dates couldn't be parsed:\n#" text = text .. table.concat(errors,"\n#") .. "\n" end return require('Module:Message box').main('tmbox',)

end

p.header = function(frame) local text = frame:expandTemplate text = text .. "\n" if mw.title.getCurrentTitle.subpageText

"Report header" then return text end frame = frame:getParent local date = Date(frame.args[1]) text = text .. '

\n' text = text .. "

Most Popular Wikipedia Articles of the Week (" text = text .. range(date) .. ")

\n"

local count = 0 for index, nameStr in pairs(frame.args) do if not (index

1) then count = count + 1 end end

if count > 0 then text = text .. "Prepared with commentary by "

if count

1 then text = text .. userLink(frame.args[2]) elseif count

2 then text = text .. userLink(frame.args[2]) .. " and " .. userLink(frame.args[3]) else local i = 2 while i <= count do text = text .. userLink(frame.args[i]) .. ", " i = i + 1 end text = text .. " and " .. userLink(frame.args[count+1]) end end

local key = " "

text = text .. "\n\nā† December 2012 monthly report" else text = text .. range(date-7) .. "|Last week's report]]" end if mw.title.getCurrentTitle.subpageText ~= "Top 25 Report" then text = text .. " ā€“ Next week's report ā†’" key = "Top 25 " .. date:text("%Y%m%d") end if mw.title.getCurrentTitle.namespace

4 then text = text .. "" end return textend

return p