پودمان:ForLoop: تفاوت میان نسخه‌ها

۶۶۶ بایت اضافه‌شده ،  ‏۲۷ اکتبر ۲۰۲۱
به نسخهٔ 31707907 از Jeeputer (بحث) برگردانده شد (TW)
جز (۱ نسخه واردشده)
 
(به نسخهٔ 31707907 از Jeeputer (بحث) برگردانده شد (TW))
خط ۲: خط ۲:


local getArgs = require('Module:Arguments').getArgs
local getArgs = require('Module:Arguments').getArgs
 
local yesno = require('Module:Yesno')
local makeTemplate = require('Module:Template invocation').invocation
p = {}
p = {}


خط ۱۵: خط ۱۶:
function p._main(args)
function p._main(args)
local template = args['call'] or 'void'
local template = args['call'] or 'void'
local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting()
local variableParam = args.pv
local variableParam = args.pv
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters
خط ۲۴: خط ۲۶:


local result = ''
local result = ''
local addSeparator = false;
for i, v in ipairs(variableVals) do
for i, v in ipairs(variableVals) do
v = mw.text.trim(v) -- trim whitespace
v = mw.text.trim(v) -- trim whitespace
local targs = constantArgs
if #v > 0 or not yesno(args.skipBlanks) then
targs[variableParam] = variableValPrefix .. v .. variableValPostfix
if addSeparator then
local expandedTemplate = p.callTemplate(template, targs)
result = result .. sep
result = result .. expandedTemplate
end
if variableVals[i + 1] then
addSeparator = true;
result = result .. sep
local targs = constantArgs
targs[variableParam] = variableValPrefix .. v .. variableValPostfix
if calltemplates then
result = result .. p.callTemplate(template, targs)
else
result = result .. makeTemplate(template, targs)
end
end
end
end
end
خط ۵۳: خط ۶۲:
function p.getVariableVals(args)
function p.getVariableVals(args)
local variableVals = {}
local variableVals = {}
for i, v in ipairs(args) do
if args.start or args.stop or args.by then
if i ~= 1 then
if args[2] then
variableVals[i - 1] = v
error("Both start/stop/by and numbered parameters specified")
end
start = tonumber(args.start or 1)
stop = tonumber(args.stop or 1)
by = tonumber(args.by or 1)
for i = start, stop, by do
variableVals [#variableVals + 1] = i
end
else
for i, v in ipairs(args) do
if i ~= 1 then
variableVals[i - 1] = v
end
end
end
end
end
کاربر ناشناس