Module:NPP backlog explained

local modtime = require('Module:Time').time

local data = mw.loadJsonData("Wikipedia:New pages patrol/Backlog chart/daily")

local backlog = for k,v in ipairs(data) do backlog[v["date"]] = v["value"]end

local function parseDate(date) local ymd = for i in string.gmatch(date, "[0-9]+") do table.insert(ymd, i) end ymd = return os.time(ymd)end

local p = ;

function p._articles(date) return backlog[date] or 0end

function p.articles(frame) local templateArgs = frame.args local date = templateArgs[1] or os.date("%Y-%m-%d") return p._articles(date)end

function p._diff(n1, date, delta) local n2 = p._articles(date) if n2 > 0 then return n1 - n2 else local date2 = date local days = 0 while n2

0 do date2 = os.date("%Y-%m-%d", parseDate(date2) - (60*60*24)) n2 = p._articles(date2) days = days + 1 end return math.floor(((n1 - n2) / (days + delta)) * delta) endend

function p.diff(frame) local templateArgs = frame.args local n1 = templateArgs[1] local date = templateArgs[2] or os.date("%Y-%m-%d") local delta = templateArgs[3] or 1 return p._diff(n1, date, delta)end

return p