模块:High-use
Lua错误:无法创建进程:proc_open(): unable to create pipe Too many open files Lua错误:无法创建进程:proc_open(): unable to create pipe Too many open files Lua错误:无法创建进程:proc_open(): unable to create pipe Too many open files
Implements {{High-use}}. Uses bot-updated values from subpages of Module:Transclusion_count/data/ when available.
Usage
{{Lua错误:无法创建进程:proc_open(): unable to create pipe Too many open files}}
number of transclusions
: The first parameter is either a static number of times the template has been transcluded, or the word "risk" (without quotes) to display "a very large number of" instead of the actual value. This value will be ignored if transclusion data is available for the current page.discussion page, or use + notation
: The second parameter is overloaded. It will cause the number of transclusions to display as "#,###+" instead of "approximately #,###" when set equal to "yes" (without quotes). When used in this manner, values will be rounded down, instead of rounded to the nearest number with the appropriate number of significant figures. When set to any other non-blank value, it will replace the link to the template's talk page to the value of the parameter (for example,2=WP:VPT
will insert a link to WP:VPT),|all-pages=yes
: Will also output what percentage of all pages use the template. This should only be used for very highly transcluded templates, and the percentage will only display if its greater than 1%.|info=extra information
: When set to non-blank, will insert extra information into the template text if the template has more than 10,000 transclusions or parameter 1 is set to "risk".|demo=Template_name
: Will use the transclusion count for the template at Template:Template_name instead of detecting what template it is being used on. Capitalization must exactly match the value used in Special:PrefixIndex/Module:Transclusion_count/data/.|form=
: When set to "editnotice", will display the message using {{editnotice}} instead of {{ombox}}.|expiry=
: Sets the|expiry=
parameter for {{editnotice}}.|system=in system messages
: if set, this module looks like {{Used in system}}. Use that template directly as it performs some checks.|fetch=
: if set to false, the module will not attempt to fetch transclusion counts using Module:Transclusion count
Other functions
- num
- Produces the text and and link to toolforge surrounding the amount of transclusions.
- risk
- With this function, if
risk
is passed into the first unnamed parameter, or there are more than 100k transclusions, this will returnrisk
. - text
- Returns the body text of this template, with nil or a number of transclusions.
脚本错误:Lua错误:无法创建进程:proc_open(): unable to create pipe Too many open files
local p = {} local _fetch = require('Module:Transclusion_count').fetch local nspn = mw.getCurrentFrame():preprocess('{{Namespace pagename}}') local _separated_entries = require('Module:Separated entries').main function p.num(frame, count) if count == nil then count = _fetch(frame) end -- Build output string local return_value = "" if count == nil then if frame.args[1] == "risk" then return_value = "大量頁面" else return_value = "許多頁面" 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] == "yes") or (mw.ustring.sub(frame.args[1],-1) == "+") 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("約%s個頁面", mw.getContentLanguage():formatNum(math.floor( (count / 10^(f)) + 0.5) * (10^(f))) ) end -- Insert percent of pages if frame.args["all-pages"] and frame.args["all-pages"] ~= "" then local percent = math.floor( ( (count/frame:callParserFunction('NUMBEROFPAGES', 'R') ) * 100) + 0.5) return_value = string.format("%s,佔全部頁面的%s%%", return_value, percent) end end return return_value end -- Actions if there is a large (greater than or equal to 100,000) transclusion count function p.risk(frame) local return_value = "" if frame.args[1] == "risk" then return_value = "risk" else local count = _fetch(frame) if count and count >= 100000 then return_value = "risk" end end return return_value end function p.text(frame, count) local bot_text = "\n\n----\n<small>模板引用數量會自動更新。</small>" if frame.args["nobot"] == "true" then bot_text = "" end if count == nil then count = _fetch(frame) end local return_value = {} local title = mw.title.getCurrentTitle() local isdemo = false if frame.args["demo"] and frame.args["demo"] ~= "" then isdemo = true title = mw.title.new(frame.args["demo"], "Template") end if title.subpageText == "doc" or title.subpageText == "sandbox" or title.subpageText == "testcases" then title = title.basePageTitle end local templatecount = string.format("https://templatecount.toolforge.org/index.php?lang=zh&namespace=%s&name=%s", title.namespace,mw.uri.encode(title.text)) local used_on_text = string.format("'''%s被引用於[%s %s]'''", (isdemo and "[["..title.fullText.."]]") or ("此"..nspn), templatecount, p.num(frame, count) ) local sandbox_text = _separated_entries({ string.format("[[%s/sandbox|'''沙盒''']]", title.fullText), string.format("[[%s/testcases|'''測試樣例''']]", title.fullText), (title.namespace == 828 and "" or "[[Special:Mypage/沙盒|'''您的沙盒''']]"), separator="、", conjunction="或" }) local info = "" if frame.args["info"] and frame.args["info"] ~= "" then info = "<br />" .. frame.args["info"] end sandbox_text = string.format("。%s<br /><small>為了避免造成大規模的影響,所有對此%s的編輯應先於%s上測試。</small>", info, nspn, sandbox_text ) local discussion_text = string.format("<br /><small>測試後無誤的版本可以一次性地加入此%s中,但是修改前請務必於", nspn) if frame.args["2"] and frame.args["2"] ~= "" and frame.args["2"] ~= "yes" then discussion_text = string.format("%s'''[[%s]]'''", discussion_text, frame.args["2"]) else discussion_text = string.format("%s[[%s|'''討論頁''']]", discussion_text, title.talkPageTitle.fullText ) end return table.concat({used_on_text, sandbox_text, discussion_text, "發起討論。</small>", bot_text}) end function p.main(frame) local count = _fetch(frame) local return_value = "" local image = "[[File:Dialog-warning-yellow.svg|64px|alt=Warning|link=]]" local type_param = "style" if (frame.args[1] == "risk" or (count and count >= 100000) ) then image = "[[File:Dialog-warning-orange.svg|64px|alt=Warning|link=]]" type_param = "content" end if frame.args["form"] == "editnotice" then return_value = frame:expandTemplate{ title = 'editnotice', args = { ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } else return_value = frame:expandTemplate{ title = 'ombox', args = { ["type"] = type_param, ["image"] = image, ["text"] = p.text(frame, count), ["expiry"] = (frame.args["expiry"] or "") } } end return return_value end return p