Difference between revisions of "Module:Rail-interchange multi/sandbox"

From blackwiki
Jump to navigation Jump to search
blackwiki>Jc86035
m (fix frame)
blackwiki>Jc86035
m (test)
Line 4: Line 4:
 
local data = frame.args[1]
 
local data = frame.args[1]
 
local div = frame.args['div']
 
local div = frame.args['div']
local result, sep = '', ''
+
local result, sep, default = '', ''
local data = mw.text.split(data, '+')
 
 
local args = {}
 
local args = {}
 +
data = mw.text.split(data, '+')
 
for i1, v1 in ipairs(data) do
 
for i1, v1 in ipairs(data) do
 +
args = {}
 
if v1 ~= '' and v1 ~= '\\' then
 
if v1 ~= '' and v1 ~= '\\' then
 
local tmp = mw.text.split(v1, '\\')
 
local tmp = mw.text.split(v1, '\\')
if args[1] then sep = ' ' end
+
if i1 == 1 then
 +
default = mw.clone(tmp[1])
 +
else
 +
sep = ' '
 +
end
 
for i2, v2 in ipairs(tmp) do
 
for i2, v2 in ipairs(tmp) do
 
if i2 < 5 then
 
if i2 < 5 then
 
if i2 == 1 then
 
if i2 == 1 then
if not (v2 == '' or v2 == nil) then
+
args[i2] = ((v2 == '' and nil or v2) or default)
args[i2] = v2
 
end
 
 
else
 
else
 
args[i2] = (v2 == '' and nil or v2)
 
args[i2] = (v2 == '' and nil or v2)
Line 27: Line 30:
 
end
 
end
 
end
 
end
if div == 'yes' or div == 'y' then result = '<div style="display: table-cell; vertical-align: middle; padding-left: 3px; white-space: nowrap;">' .. result .. '</div>' end
+
if div == 'yes' or div == 'y' then result = '<div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">' .. result .. '</div>' end
 
return result
 
return result
 
end
 
end
+
 
 
function p.doublerow(frame)
 
function p.doublerow(frame)
 
local data = frame.args[1]
 
local data = frame.args[1]
local result, sep = '', ''
+
local result, sep, default = '', ''
local data = mw.text.split(data, '+')
 
 
local args = {}
 
local args = {}
 
local sep_code = {
 
local sep_code = {
 
[0] = '<br/>',
 
[0] = '<br/>',
[1] = '</div><div style="display: table-cell; vertical-align: middle; padding-left: 3px; white-space: nowrap;">'
+
[1] = '</div><div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">'
 
}
 
}
 +
data = mw.text.split(data, '+')
 
for i1, v1 in ipairs(data) do
 
for i1, v1 in ipairs(data) do
 +
args = {}
 
if v1 ~= '' and v1 ~= '\\' then
 
if v1 ~= '' and v1 ~= '\\' then
 
local tmp = mw.text.split(v1, '\\')
 
local tmp = mw.text.split(v1, '\\')
if args[1] then sep = sep_code[i1 % 2] end
+
if i1 == 1 then
 +
default = mw.clone(tmp[1])
 +
else
 +
sep = sep_code[i1 % 2]
 +
end
 
for i2, v2 in ipairs(tmp) do
 
for i2, v2 in ipairs(tmp) do
 
if i2 < 5 then
 
if i2 < 5 then
 
if i2 == 1 then
 
if i2 == 1 then
if not (v2 == '' or v2 == nil) then
+
args[i2] = ((v2 == '' and nil or v2) or default)
args[i2] = v2
 
end
 
 
else
 
else
 
args[i2] = (v2 == '' and nil or v2)
 
args[i2] = (v2 == '' and nil or v2)
Line 60: Line 66:
 
end
 
end
 
end
 
end
result = '<div style="display: table-cell; vertical-align: middle; padding-left: 3px; white-space: nowrap;">' .. result .. '</div>'
+
result = '<div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">' .. result .. '</div>'
 
return result
 
return result
 
end
 
end
  
 
return p
 
return p

Revision as of 01:15, 23 September 2019

Documentation for this module may be created at Module:Rail-interchange multi/sandbox/doc

local p = {}

function p.row(frame)
	local data = frame.args[1]
	local div = frame.args['div']
	local result, sep, default = '', ''
	local args = {}
	data = mw.text.split(data, '+')
	for i1, v1 in ipairs(data) do
		args = {}
		if v1 ~= '' and v1 ~= '\\' then
			local tmp = mw.text.split(v1, '\\')
			if i1 == 1 then
				default = mw.clone(tmp[1])
			else
				sep = ' '
			end
			for i2, v2 in ipairs(tmp) do
				if i2 < 5 then
					if i2 == 1 then
						args[i2] = ((v2 == '' and nil or v2) or default)
					else
						args[i2] = (v2 == '' and nil or v2)
					end
				end
			end
			if args[1] or args[2] then
				result = result .. sep .. frame:expandTemplate{ title = 'Rail-interchange', args = args }
			end
		end
	end
	if div == 'yes' or div == 'y' then result = '<div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">' .. result .. '</div>' end
	return result
end

function p.doublerow(frame)
	local data = frame.args[1]
	local result, sep, default = '', ''
	local args = {}
	local sep_code = {
		[0] = '<br/>',
		[1] = '</div><div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">'
	}
	data = mw.text.split(data, '+')
	for i1, v1 in ipairs(data) do
		args = {}
		if v1 ~= '' and v1 ~= '\\' then
			local tmp = mw.text.split(v1, '\\')
			if i1 == 1 then
				default = mw.clone(tmp[1])
			else
				sep = sep_code[i1 % 2]
			end
			for i2, v2 in ipairs(tmp) do
				if i2 < 5 then
					if i2 == 1 then
						args[i2] = ((v2 == '' and nil or v2) or default)
					else
						args[i2] = (v2 == '' and nil or v2)
					end
				end
			end
			if args[1] or args[2] then
				result = result .. sep .. frame:expandTemplate{ title = 'Rail-interchange', args = args }
			end
		end
	end
	result = '<div style="display:table-cell;vertical-align:middle;padding-left:3px;white-space:nowrap">' .. result .. '</div>'
	return result
end

return p