local p =
-- _fetch looks at the "demo" argument.local _fetch = require('Module:Transclusion_count')._fetchlocal yesno = require('Module:Yesno')
function p._num(args, count, no_percent) if count
false then if (args[1] or ) ~= then count = tonumber(args[1]) end else count = _fetch(args) 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 (args[2]
'string' and (mw.ustring.sub(args[1],-1)
-- Insert percentage of pages if that is likely to be >= 1% and when |no-percent= not set to yes no_percent = no_percent or args['no-percent'] if count and count > 250000 and not yesno (no_percent) then local numpages = mw.getCurrentFrame:callParserFunction('NUMBEROFPAGES', 'R') local percent = math.floor(((count/numpages) * 100) + 0.5) if percent >= 1 then return_value = string.format("%s pages, or roughly %s%% of all", return_value, percent) end end end return return_valueend
function p.num(frame, count) return p._num(frame.args, count, frame:getParent.args['no-percent'] or frame.args['no-percent'])end
-- Actions if there is a large (greater than or equal to 100,000) transclusion countfunction p._risk(args) if args[1]
function p.risk(frame) return p._risk(frame.args)end
function p._text(args, 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 = (mw.getCurrentFrame:preprocess("")
nil then if yesno(args['fetch'])
if title.subpageText
"sandbox" then title = title.basePageTitle end local systemMessages = (args['system'] or ) ~= -- This retrieves the project URL automatically to simplify localization. local templateCount = ('on %s pages'):format(title:fullUrl:gsub('//(.-)/.*', '%1'), mw.uri.encode(title.fullText), p._num(args, count)) local used_on_text = "This " .. (title.namespace
828 and "module" or "template"), title.fullText, title.fullText, title.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 args["2"] and args["2"] ~= "" and args["2"] ~= "yes" then discussion_text = string.format("%sat %s", discussion_text, 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.text(frame, count) return p._text(frame.args, count)end
function p._main(args, nocat) local count = nil if yesno(args['fetch'])
or not yesno(nocat)) if categorise and not mw.title.getCurrentTitle.isRedirect then epilogue = mw.getCurrentFrame:preprocess('') end elseif (args[1]
"editnotice" then return mw.getCurrentFrame:expandTemplate .. epilogue else return require('Module:Message box').main('ombox',) .. epilogue endend
function p.main(frame) return p._main(frame.args, frame:getParent.args['nocat'] or frame.args['nocat'])endreturn p