This wiki has had no edits or log actions made within the last 45 days and has been automatically marked as inactive. If you would like to prevent this wiki from being closed, please start showing signs of activity here. If there are no signs of this wiki being used within the next 15 days, this wiki will be closed in accordance to the Dormancy Policy (which all wiki founders accept when requesting a wiki). If this wiki is closed and no one reopens it 135 days from now, this wiki will become eligible for deletion. Note: If you are a bureaucrat, you can go to Special:ManageWiki and uncheck "inactive" yourself.
This module is rated as ready for general use. It has reached a mature form and is thought to be bug-free and ready for use wherever appropriate. It is ready to mention on help pages and other Wikipedia resources as an option for new users to learn. To reduce server load and bad output, it should be improved by sandbox testing rather than repeated trial-and-error editing.
This module is subject to page protection. It is a highly visible module in use by a very large number of pages, or is substituted very frequently. Because vandalism or mistakes would affect many pages, and even trivial editing might cause substantial load on the servers, it is protected from editing.
This Lua module is used on approximately 50,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages. Consider discussing changes on the talk page before implementing them.
-- This module implements {{for loop}}.localgetArgs=require('Module:Arguments').getArgslocalyesno=require('Module:Yesno')localmakeTemplate=require('Module:Template invocation').invocationp={}functionp.main(frame)localargs=getArgs(frame,{trim=false,removeBlanks=false})returnp._main(args)endfunctionp._main(args)localtemplate=args['call']or'void'localcalltemplates=yesno(args.substallor"",true)ornotmw.isSubsting()localvariableParam=args.pvvariableParam=tonumber(variableParam)orvariableParamor1-- fix for positional parameterslocalvariableValPrefix=args.prefixor''localvariableValPostfix=args.postfixor''localsep=args[1]or''localconstantArgs=p.getConstants(args)localvariableVals=p.getVariableVals(args)localresult=''localaddSeparator=false;fori,vinipairs(variableVals)dov=mw.text.trim(v)-- trim whitespaceif#v>0ornotyesno(args.skipBlanks)thenifaddSeparatorthenresult=result..sependaddSeparator=true;localtargs=constantArgstargs[variableParam]=variableValPrefix..v..variableValPostfixifcalltemplatesthenlocaloutput=p.callTemplate(template,targs)if#mw.text.trim(output)==0thenaddSeparator=falseendresult=result..outputelseresult=result..makeTemplate(template,targs)endendendreturnresultendfunctionp.getConstants(args)localconstantArgNums=p.getArgNums(args,'pc','n')localconstantArgs={}for_,numinipairs(constantArgNums)dolocalkeyArg='pc'..tostring(num)..'n'localvalArg='pc'..tostring(num)..'v'localkey=args[keyArg]key=tonumber(key)orkeylocalvalue=args[valArg]constantArgs[key]=valueendreturnconstantArgsendfunctionp.getVariableVals(args)localvariableVals={}ifargs.startorargs.stoporargs.bythenifargs[2]thenerror("Both start/stop/by and numbered parameters specified")endstart=tonumber(args.startor1)stop=tonumber(args.stopor1)by=tonumber(args.byor1)fori=start,stop,bydovariableVals[#variableVals+1]=iendelsefori,vinipairs(args)doifi~=1thenvariableVals[i-1]=vendendendreturnvariableValsendfunctionp.getArgNums(args,prefix,suffix)-- Returns a table containing the numbers of the arguments that exist-- for the specified prefix and suffix.localnums={}localpattern='^'..prefix..'([1-9]%d*)'..suffix..'$'fork,vinpairs(args)dolocalnum=tostring(k):match(pattern)ifnumthennums[#nums+1]=tonumber(num)endendtable.sort(nums)returnnumsendfunctionp.callTemplate(template,targs)returnmw.getCurrentFrame():expandTemplate{title=template,args=targs}endreturnp