Module:RemoveMiddleColumn
Appearance
Example Usage:
{{Device Disambiguation|Example}}
local p={}
function p.slim(f)
local t=f.args[1]or""
if t==""then return""end
local l={}
for s in t:gmatch("(.-)\n?")do table.insert(l,s)end
local r={}
local intable=false
for _,orig in ipairs(l)do
if orig:match("^<section")or orig:match("^</section")then r[#r+1]=orig
elseif orig:match("^%s*%{%|")then intable=true r[#r+1]=orig
elseif orig:match("^%s*|}%}")then intable=false r[#r+1]=orig
elseif intable then
if orig:match("^%s*!")then
local heads={}
for head in orig:gmatch("!%s*(.-)%s*!!")do heads[#heads+1]=head end
local last=orig:match("!!%s*(.-)%s*$")or""
if heads[1]then heads[#heads+1]=last end
local newh={}
for i=1,#heads do if i~=2 then newh[#newh+1]="!'''"..heads[i] end end
if#newh>0 then r[#r+1]=table.concat(newh," !!''' ")end
elseif orig:match("^%s*|%-")then r[#r+1]="|-"
elseif orig:match("^%s*|")then
local cells={}
local temp=orig
while temp:match("||")do
local pos=temp:find("||")
local cell=temp:sub(1,pos-1):match("|%s*(.-)%s*$")or""
cells[#cells+1]=cell
temp=temp:sub(pos+2)
end
local lastcell=temp:match("|%s*(.-)%s*$")or""
cells[#cells+1]=lastcell
local newc={}
for i=1,#cells do if i~=2 then newc[#newc+1]="|"..cells[i] end end
if#newc>=2 then r[#r+1]=table.concat(newc," || ")end
else r[#r+1]=orig
end
else r[#r+1]=orig
end
end
return table.concat(r,"\n")
end
return p