Difference between revisions of "Module:Item"

From blackwiki
Jump to navigation Jump to search
blackwiki>Petr Matas
blackwiki>Petr Matas
Line 5: Line 5:
 
end
 
end
  
function p.main(frame)
+
function unescape(str)
 +
return str:gsub("\\(.)", "%1")
 +
end
 +
 
 +
function p.pack(frame)
 
local parent = frame:getParent()
 
local parent = frame:getParent()
 
 
Line 13: Line 17:
 
end
 
end
 
 
return result;
+
return result .. "|";
 +
end
 +
 
 +
function unpack(str)
 +
 +
end
 +
 
 +
function p.each(frame)
 +
local parent = frame:getParent()
 +
local items = parent.args
 +
local separator = frame.args.separator or ""
 +
local template = frame.args.template
 +
 +
local result = ""
 +
for i, item in ipairs(items) do
 +
result = result .. frame:expandTemplate{ title = template, args = unpack(item) }
 +
if items[i + 1] then
 +
result = result .. separator
 +
end
 +
end
 +
 +
return result
 
end
 
end
  
 
return p
 
return p

Revision as of 04:16, 13 December 2015

This template implements {{Item}}, {{Component}} and {{Format item}}.


local p = {}

function escape(str)
	return str:gsub("([|\\])", "\\%1")
end

function unescape(str)
	return str:gsub("\\(.)", "%1")
end

function p.pack(frame)
	local parent = frame:getParent()
	
	local result = ''
	for key, value in pairs(parent.args) do
		result = result .. "|" .. escape(tostring(key)) .. "|" .. escape(value)
	end
	
	return result .. "|";
end

function unpack(str)
	
end

function p.each(frame)
	local parent = frame:getParent()
	local items = parent.args
	local separator = frame.args.separator or ""
	local template = frame.args.template
	
	local result = ""
	for i, item in ipairs(items) do
		result = result .. frame:expandTemplate{ title = template, args = unpack(item) }
		if items[i + 1] then
			result = result .. separator
		end
	end
	
	return result
end

return p