local p =
-- _fetch looks at the "demo" argument.local _fetch = require('Module:Transclusion_count').fetchlocal yesno = require('Module:Yesno')
function p.num(frame, count) if count
false then if (frame.args[1] or ) ~= then count = tonumber(frame.args[1]) end else count = _fetch(frame) end end -- Build output string local return_value = "" if count
"risk" then return "a very large number of" else return "many" end else -- Use 2 significant figures for smaller numbers and 3 for larger ones local sigfig = 2 if count >= 100000 then sigfig = 3 end -- Prepare to round to appropriate number of sigfigs local f = math.floor(math.log10(count)) - sigfig + 1 -- Round and insert "approximately" or "+" when appropriate if (frame.args[2]
"+") then -- Round down return_value = string.format("%s+", mw.getContentLanguage:formatNum(math.floor((count / 10^(f))) * (10^(f)))) else -- Round to nearest return_value = string.format("approximately %s", mw.getContentLanguage:formatNum(math.floor((count / 10^(f)) + 0.5) * (10^(f)))) end
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes if count and count > 250000 and not yesno (frame:getParent.args['no-percent']) then return_value = string.format("%s pages, or roughly %.1f%% of all", return_value, (count/frame:callParserFunction('NUMBEROFPAGES', 'R')) * 100) end end return return_valueend
-- Actions if there is a large (greater than or equal to 100,000) transclusion countfunction p.risk(frame) if frame.args[1]
function p.text(frame, count) -- Only show the information about how this template gets updated if someone -- is actually editing the page and maybe trying to update the count. local bot_text = (frame:preprocess("")
nil then if yesno(frame.args['fetch'])
"doc" or title.subpageText
then systemMessages = nil end -- This retrieves the project URL automatically to simplify localiation. local templateCount = ('on %s pages'):format(mw.title.getCurrentTitle:fullUrl:gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p.num(frame, count)) local used_on_text = "This " .. (mw.title.getCurrentTitle.namespace
828 and "module" or "template"), title.fullText, title.fullText, mw.title.getCurrentTitle.namespace
"risk" or (count and count >= 100000)) then local info = systemMessages and '.
Changes to it can cause immediate changes to the Wikipedia user interface.' or '.' if infoArg then info = info .. "
" .. infoArg end sandbox_text = info .. '
To avoid major disruption' .. (count and count >= 100000 and ' and server load' or ) .. ', any changes should be tested in the ' .. sandbox_text .. 'The tested changes can be added to this page in a single edit. ' else sandbox_text = (infoArg and ('.
' .. infoArg .. ' C') or ' and c') .. 'hanges may be widely noticed. Test changes in the ' .. sandbox_text end
local discussion_text = systemMessages and 'Please discuss changes ' or 'Consider discussing changes ' if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%sat %s", discussion_text, frame.args["2"]) else discussion_text = string.format("%son the talk page", discussion_text, title.talkPageTitle.fullText) end return used_on_text .. sandbox_text .. discussion_text .. " before implementing them." .. bot_textend
function p.main(frame) local count = nil if yesno(frame.args['fetch'])
or not yesno(nocat)) if categorise and not mw.title.getCurrentTitle.isRedirect then epilogue = frame:preprocess('') end elseif (frame.args[1]
"editnotice" then return frame:expandTemplate .. epilogue else return require('Module:Message box').main('ombox',) .. epilogue endend
return p