Module:RemoveMiddleColumn: Difference between revisions
Appearance
imported>Ziebster No edit summary |
imported>Ziebster No edit summary |
||
| Line 4: | Line 4: | ||
local text = frame.args[1] or "" | local text = frame.args[1] or "" | ||
if text == "" then return "" end | if text == "" then return "" end | ||
local lines = {} | local lines = {} | ||
for line in text:gmatch("([^\n]*)\n?") do | for line in text:gmatch("([^\n]*)\n?") do | ||
table.insert(lines, line) | table.insert(lines, line) | ||
end | end | ||
local result = {} | local result = {} | ||
local | local i = 1 | ||
while i <= #lines do | |||
local trimmed = lines[i]:match("^%s*(.-)%s*$") or "" | |||
local trimmed = | |||
if trimmed:match("^<section") or trimmed:match("^</section") then | if trimmed:match("^<section") or trimmed:match("^</section") then | ||
table.insert(result, | table.insert(result, lines[i]) | ||
elseif trimmed:match("^%{%|") then | elseif trimmed:match("^%{%|") then | ||
table.insert(result, lines[i]) | |||
table.insert(result, | |||
elseif trimmed:match("^|%}") then | elseif trimmed:match("^|%}") then | ||
table.insert(result, lines[i]) | |||
table.insert(result, | elseif trimmed:match("^|%-") then | ||
elseif | table.insert(result, lines[i]) | ||
elseif trimmed:match("^!") then | |||
local headers = {} | |||
while i <= #lines and lines[i]:match("^%s*!") do | |||
table.insert(headers, lines[i]) | |||
i = i + 1 | |||
end | |||
i = i - 1 | |||
if #headers == 3 then | |||
table.insert(result, headers[1]) | |||
table.insert(result, headers[3]) | |||
end | |||
elseif trimmed:match("^|") and not trimmed:match("^|%-") and not trimmed:match("^|%}") then | |||
local cells = {} | |||
while i <= #lines and lines[i]:match("^%s*|") and not lines[i]:match("^%s*|%-") and not lines[i]:match("^%s*|%}") do | |||
table.insert(cells, lines[i]) | |||
i = i + 1 | |||
end | |||
i = i - 1 | |||
if #cells == 3 then | |||
table.insert(result, cells[1]) | |||
table.insert(result, cells[3]) | |||
table.insert(cells, | |||
table.insert(result, | |||
end | end | ||
else | else | ||
table.insert(result, | table.insert(result, lines[i]) | ||
end | end | ||
i = i + 1 | |||
end | end | ||
return table.concat(result, "\n") | return table.concat(result, "\n") | ||
end | end | ||
return p | return p | ||
Latest revision as of 14:53, 30 December 2025
Example Usage:
{{Device Disambiguation|Example}}
local p = {}
function p.slim(frame)
local text = frame.args[1] or ""
if text == "" then return "" end
local lines = {}
for line in text:gmatch("([^\n]*)\n?") do
table.insert(lines, line)
end
local result = {}
local i = 1
while i <= #lines do
local trimmed = lines[i]:match("^%s*(.-)%s*$") or ""
if trimmed:match("^<section") or trimmed:match("^</section") then
table.insert(result, lines[i])
elseif trimmed:match("^%{%|") then
table.insert(result, lines[i])
elseif trimmed:match("^|%}") then
table.insert(result, lines[i])
elseif trimmed:match("^|%-") then
table.insert(result, lines[i])
elseif trimmed:match("^!") then
local headers = {}
while i <= #lines and lines[i]:match("^%s*!") do
table.insert(headers, lines[i])
i = i + 1
end
i = i - 1
if #headers == 3 then
table.insert(result, headers[1])
table.insert(result, headers[3])
end
elseif trimmed:match("^|") and not trimmed:match("^|%-") and not trimmed:match("^|%}") then
local cells = {}
while i <= #lines and lines[i]:match("^%s*|") and not lines[i]:match("^%s*|%-") and not lines[i]:match("^%s*|%}") do
table.insert(cells, lines[i])
i = i + 1
end
i = i - 1
if #cells == 3 then
table.insert(result, cells[1])
table.insert(result, cells[3])
end
else
table.insert(result, lines[i])
end
i = i + 1
end
return table.concat(result, "\n")
end
return p