https://wiki.hisgis.nl/index.php?title=Module:For_loop&feed=atom&action=historyModule:For loop - Bewerkingsoverzicht2024-03-28T13:12:01ZBewerkingsoverzicht voor deze pagina op de wikiMediaWiki 1.38.2https://wiki.hisgis.nl/index.php?title=Module:For_loop&diff=1064&oldid=prevThomas: 1 versie geïmporteerd2019-09-05T16:57:50Z<p>1 versie geïmporteerd</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<tr class="diff-title" lang="nl">
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">← Oudere versie</td>
<td colspan="1" style="background-color: #fff; color: #202122; text-align: center;">Versie van 5 sep 2019 17:57</td>
</tr><tr><td colspan="2" class="diff-notice" lang="nl"><div class="mw-diff-empty">(geen verschil)</div>
</td></tr></table>Thomashttps://wiki.hisgis.nl/index.php?title=Module:For_loop&diff=1063&oldid=previnterwiki>Pppery: Belatedly implementing edit request by SMcCandlish on talk page: no separators after empty parameters2019-02-22T04:58:13Z<p>Belatedly implementing edit request by <a href="/index.php?title=Gebruiker:SMcCandlish&action=edit&redlink=1" class="new" title="Gebruiker:SMcCandlish (de pagina bestaat niet)">SMcCandlish</a> on talk page: no separators after empty parameters</p>
<p><b>Nieuwe pagina</b></p><div>-- This module implements {{for loop}}.<br />
<br />
local getArgs = require('Module:Arguments').getArgs<br />
local yesno = require('Module:Yesno')<br />
local makeTemplate = require('Module:Template invocation').invocation<br />
p = {}<br />
<br />
function p.main(frame)<br />
local args = getArgs(frame, {<br />
trim = false,<br />
removeBlanks = false<br />
})<br />
return p._main(args)<br />
end<br />
<br />
function p._main(args)<br />
local template = args['call'] or 'void'<br />
local calltemplates = yesno(args.substall or "", true) or not mw.isSubsting()<br />
local variableParam = args.pv<br />
variableParam = tonumber(variableParam) or variableParam or 1 -- fix for positional parameters<br />
local variableValPrefix = args.prefix or ''<br />
local variableValPostfix = args.postfix or ''<br />
local sep = args[1] or ''<br />
local constantArgs = p.getConstants(args)<br />
local variableVals = p.getVariableVals(args)<br />
<br />
local result = ''<br />
local addSeparator = false;<br />
for i, v in ipairs(variableVals) do<br />
v = mw.text.trim(v) -- trim whitespace<br />
if #v > 0 or not yesno(args.skipBlanks) then<br />
if addSeparator then<br />
result = result .. sep<br />
end<br />
addSeparator = true;<br />
local targs = constantArgs<br />
targs[variableParam] = variableValPrefix .. v .. variableValPostfix<br />
if calltemplates then<br />
local output = p.callTemplate(template, targs)<br />
if #mw.text.trim(output) == 0 then<br />
addSeparator = false<br />
end<br />
result = result .. output<br />
else<br />
result = result .. makeTemplate(template, targs)<br />
end<br />
end<br />
end<br />
return result<br />
end<br />
<br />
function p.getConstants(args)<br />
local constantArgNums = p.getArgNums(args, 'pc', 'n')<br />
local constantArgs = {}<br />
for _, num in ipairs(constantArgNums) do<br />
local keyArg = 'pc' .. tostring(num) .. 'n'<br />
local valArg = 'pc' .. tostring(num) .. 'v'<br />
local key = args[keyArg]<br />
key = tonumber(key) or key<br />
local value = args[valArg]<br />
constantArgs[key] = value<br />
end<br />
return constantArgs<br />
end<br />
<br />
function p.getVariableVals(args)<br />
local variableVals = {}<br />
if args.start or args.stop or args.by then<br />
if args[2] then<br />
error("Both start/stop/by and numbered parameters specified")<br />
end<br />
start = tonumber(args.start or 1)<br />
stop = tonumber(args.stop or 1)<br />
by = tonumber(args.by or 1)<br />
for i = start, stop, by do <br />
variableVals [#variableVals + 1] = i<br />
end<br />
else<br />
for i, v in ipairs(args) do<br />
if i ~= 1 then<br />
variableVals[i - 1] = v<br />
end<br />
end<br />
end<br />
return variableVals<br />
end<br />
<br />
function p.getArgNums(args, prefix, suffix)<br />
-- Returns a table containing the numbers of the arguments that exist<br />
-- for the specified prefix and suffix.<br />
local nums = {}<br />
local pattern = '^' .. prefix .. '([1-9]%d*)' .. suffix .. '$'<br />
for k, v in pairs(args) do<br />
local num = tostring(k):match(pattern)<br />
if num then<br />
nums[#nums + 1] = tonumber(num)<br />
end<br />
end<br />
table.sort(nums)<br />
return nums<br />
end<br />
<br />
function p.callTemplate(template, targs)<br />
return mw.getCurrentFrame():expandTemplate{title = template, args = targs}<br />
end<br />
<br />
return p</div>interwiki>Pppery