Jump to content

Module:RemoveMiddleColumn

From Untitled Monster Game
Revision as of 14:36, 30 December 2025 by imported>Ziebster

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