Module:Mainspace editnotice

local Arguments = require('Module:Arguments') local Disambiguation = require('Module:Disambiguation') local TfaTitle = require('Module:TFA title')

local p = {}

p.main = function(frame) local args = Arguments.getArgs(frame) return p.core(args.page and mw.title.new(args.page) or mw.title.getCurrentTitle, frame) end

local notices = { draft_notice = function (page, ctx) if page.exists and (page.isRedirect or ctx.isDisambigPage) and mw.title.new('Draft:'..page.fullText).exists then return "Draft at" end end, blp_notice = function(page) local content = page:getContent

local living = "%[%[%s*[Cc]ategory:%s*[Ll]iving[ _]people%s*%]%]" local possiblyLiving = "%[%[%s*[Cc]ategory:%s*[Pp]ossibly[ _]living[ _]people%s*%]%]"

if content and (content:find(living) or content:find(possiblyLiving)) then return "BLP editintro" end end, disambig_notice = function(page, ctx) if ctx.isDisambigPage then return "Disambig editintro" end end, tfa_notice = function(page) if TfaTitle.today_title == page.text then return "TFA editnotice" end end, refideas_notice = function(page) local talkContent = page.talkPageTitle:getContent if talkContent and talkContent:match('%{%{[rR]ef ?idea') then return "Refideas editnotice" end end, }

p.core = function(page, frame) -- Context object to store values that are expensive to compute and required -- in multiple places local context = { isDisambigPage = Disambiguation._isDisambiguationPage(page.fullText) }

local text = '' for _, getNotice in pairs(notices) do		local template = getNotice(page, context) text = text .. (template and frame:expandTemplate{ title = template } or '') end return text end

return p