Jump to content

Module:For nowiki: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
cnt --> count
Syncing sandbox to add new "template" function
Line 1: Line 1:
local p = {}
local p = {}

local function doLoop(frame, args, code, sep, offset, argstosub)
local result = {}
code = mw.text.unstripNoWiki(code)
for i, value in ipairs(args) do
if i > offset then
argstosub["i"] = i - offset
argstosub["1"] = value
local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
table.insert(result, frame:preprocess(actualCode))
end
end
return table.concat(result, sep)
end


function p.main(frame)
function p.main(frame)
local args = frame:getParent().args
local args = frame:getParent().args
local sep = args[1]
local sep = args[1]
local code = mw.text.unstripNoWiki(args.code or args[2])
local code = args.code or args[2]
local offset = args.code and 1 or 2
local offset = args.code and 1 or 2
local result = ""
local argstosub = {}
local argstosub = {}
local iterator
for key, value in pairs(args) do
for key, value in pairs(args) do
if not tonumber(key) and key ~= "i" and key ~= "count" then
if not tonumber(key) and key ~= "i" and key ~= "count" then
Line 23: Line 34:
end
end
end
end
return doLoop(frame, args, code, sep, offset, argstosub)
for i, value in ipairs(args) do
end
if i > offset + 1 then
function p.template(frame)
result = result .. sep
local sep = frame.args[1]
end
local code = frame.args[2] or frame.args.code
if i > offset then
local offset = tonumber(frame.args.offset) or 0
argstosub["i"] = i - offset
return doLoop(frame:getParent(), frame:getParent().args, code, sep, offset, {})
argstosub["1"] = value
local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
result = result .. frame:preprocess(actualCode)
end
end
return result
end
end

return p
return p

Revision as of 23:27, 17 July 2018

local p = {}

local function doLoop(frame, args, code, sep, offset, argstosub)
	local result = {}
	code = mw.text.unstripNoWiki(code)
	for i, value in ipairs(args) do
		if i > offset then
			argstosub["i"] = i - offset
			argstosub["1"] = value
			local actualCode = code:gsub("{{{([^{}|]*)|?[^{}]*}}}", argstosub)
			table.insert(result, frame:preprocess(actualCode))
		end
	end
	return table.concat(result, sep)
end

function p.main(frame)
	local args = frame:getParent().args
	local sep = args[1]
	local code = args.code or args[2]
	local offset = args.code and 1 or 2
	local argstosub = {}
	for key, value in pairs(args) do
		if not tonumber(key) and key ~= "i" and key ~= "count" then
			argstosub[key] = value
		end
	end
	local countArg = args.count and tonumber(args.count);
	if countArg then
		offset = 0
		args = {}
		for i = 1, countArg do
		   args[i] = i
		end
	end
	return doLoop(frame, args, code, sep, offset, argstosub)
end
function p.template(frame) 
	local sep = frame.args[1]
	local code = frame.args[2] or frame.args.code
	local offset = tonumber(frame.args.offset) or 0
	return doLoop(frame:getParent(), frame:getParent().args, code, sep, offset, {})
end
return p