| Modul ini dinilai siap digunakan secara umum. Modul ini sudah matang dan diperkirakan bebas dari bug dan siap digunakan pada tempat yang tepat di manapun. Modul ini siap disinggung di halaman-halaman bantuan dan sumber informasi Wikipedia lainnya sebagai pilihan untuk dipelajari para pengguna baru. Untuk mengurangi beban server dan output yang tidak diharapkan, modul ini harus diperlengkapi dengan halaman bak pasir dan kasus uji daripada harus melakukan suntingan coba-dan-salah berulang-ulang. |
Modul ini menjalankan templat {{for loop}}. Silakan lihat halaman dokumentasi templat.
Dokumentasi di atas ditransklusikan dari Modul:For loop/doc. (sunting | riwayat)
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
Penyunting dapat melakukan uji coba pada halaman bak pasir (buat | cermin) dan kasus uji (buat) modul ini.
Subhalaman modul ini.
-- This module implements {{for loop}}. localgetArgs=require('Module:Arguments').getArgs localyesno=require('Module:Yesno') localp={} functionp.main(frame) localargs=getArgs(frame,{ trim=false, removeBlanks=false }) returnp._main(args) end functionp._main(args) localtemplate=args['call']or'void' localcalltemplates=yesno(args.substallor"",true)ornotmw.isSubsting() localvariableParam=args.pv variableParam=tonumber(variableParam)orvariableParamor1-- fix for positional parameters localvariableValPrefix=args.prefixor'' localvariableValPostfix=args.postfixor'' localsep=args[1]or'' localconstantArgs=p.getConstants(args) localvariableVals=p.getVariableVals(args) localresult='' localaddSeparator=false; for_,vinipairs(variableVals)do v=mw.text.trim(v) if#v>0ornotyesno(args.skipBlanks)then ifaddSeparatorthen result=result..sep end addSeparator=true; localtargs=constantArgs targs[variableParam]=variableValPrefix..v..variableValPostfix ifcalltemplatesthen localoutput=p.callTemplate(template,targs) if#mw.text.trim(output)==0then addSeparator=false end result=result..output else localmakeTemplate=require('Module:Template invocation').invocation result=result..makeTemplate(template,targs) end end end returnresult end functionp.getConstants(args) localconstantArgNums=p.getArgNums(args,'pc','n') localconstantArgs={} for_,numinipairs(constantArgNums)do localkeyArg='pc'..tostring(num)..'n' localvalArg='pc'..tostring(num)..'v' localkey=args[keyArg] key=tonumber(key)orkey localvalue=args[valArg] constantArgs[key]=value end returnconstantArgs end functionp.getVariableVals(args) localvariableVals={} ifargs.startorargs.stoporargs.bythen ifargs[2]then error("Both start/stop/by and numbered parameters specified") end localstart=tonumber(args.startor1) localstop=tonumber(args.stopor1) localby=tonumber(args.byor1) fori=start,stop,bydo variableVals[#variableVals+1]=i end else fori,vinipairs(args)do ifi~=1then variableVals[i-1]=v end end end returnvariableVals end functionp.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,_inpairs(args)do localnum=tostring(k):match(pattern) ifnumthen nums[#nums+1]=tonumber(num) end end table.sort(nums) returnnums end functionp.callTemplate(template,targs) returnmw.getCurrentFrame():expandTemplate{title=template,args=targs} end returnp