Module:Diagram

local trim = mw.text.trim local inputArgs

local function getArg(key) local v = trim(inputArgs[key] or '') if v=='' then return nil else return v	end end

local function tableStartTag local t	local str = '' end

-- return { render = function(frame) --currentFrame = frame inputArgs = frame:getParent.args

local str = tableStartTag

local _i = 1 local v		local row1 = '' local row2 = '' local boxclass = getArg('boxclass') local boxstyle = getArg('boxstyle') while true do			v = inputArgs[_i] if not v then break end _i = _i+1 v = trim(v)

if v == '#' then str = str .. ' '..row1 .. ' ' .. row2 .. ' '				row1 = '' row2 = '' elseif v == '_' or v == '0' or v == 'O' then row1 = row1 .. ' '				row2 = row2 .. ' ' elseif v == '-' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == 'I' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == ',' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'v' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == '.' then row1 = row1 .. '  ' row2 = row2 .. ' '			elseif v == ')' then				row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '+' then				row1 = row1 .. ' '				row2 = row2 .. '  '			elseif v == '(' then row1 = row1 .. '  ' row2 = row2 .. ' '			elseif v == '`' then row1 = row1 .. ' '				row2 = row2 .. ' ' elseif v == '^' then row1 = row1 .. ' '				row2 = row2 .. ' ' elseif v == "'" then row1 = row1 .. ' '				row2 = row2 .. ' ' elseif v == '~' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == ':' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == 'F' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'V' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == '7' then row1 = row1 .. '  ' row2 = row2 .. ' '			elseif v == 'D' then row1 = row1 .. ' ' row2 = row2 .. ' '			elseif v == 'X' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'C' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'L' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'A' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'J' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'r' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'y' then row1 = row1 .. '<td colspan="2" class="l db"> ' row2 = row2 .. ' '			elseif v == 'n' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == ']' then row1 = row1 .. '<td rowspan="2" class="l sr"> ' row2 = row2 .. ' '			elseif v == '$' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '[' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'c' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'h' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'j' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'p' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'u' then row1 = row1 .. '<td colspan="2" class="l sb"> ' row2 = row2 .. ' '			elseif v == 'q' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'E' then row1 = row1 .. '<td rowspan="2" class="l dr"> ' row2 = row2 .. ' '			elseif v == 'x' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '3' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'b' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 't' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'd' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '/' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'Y' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '\\' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'B' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'G' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'R' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'U' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '4' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '!' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'i' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '<' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '>' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '9' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '6' then row1 = row1 .. '<td colspan="2" class="l nb"> ' row2 = row2 .. ' '			elseif v == '&' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '?' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '"' then				row1 = row1 .. ' <td class="l" rowspan="2"> '				row2 = row2 .. ' '			elseif v == ';' then				row1 = row1 .. '<td colspan="2" class="l nb"> '				row2 = row2 .. ' '			elseif v == 'a' then				row1 = row1 .. '  '				row2 = row2 .. '<td class="l" colspan="2"> '			elseif v == 'e' then				row1 = row1 .. '  '				row2 = row2 .. '<td class="l" colspan="2"> '			elseif v == 'M' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == 'W' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == '2' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == '5' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == 'f' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == 'g' then				row1 = row1 .. ' <td class="l" rowspan="2"> '				row2 = row2 .. ' '			elseif v == 'k' then				row1 = row1 .. '  '				row2 = row2 .. '  '			elseif v == 's' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'o' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'm' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'w' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'z' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'P' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'H' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'K' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'N' then row1 = row1 .. ' <td class="l" rowspan="2"> ' row2 = row2 .. ' '			elseif v == 'T' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'Z' then row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == 'S' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == 'Q' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l" colspan="2"> ' elseif v == '←' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l alb" colspan="2"> ' elseif v == '→' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l arb" colspan="2"> ' elseif v == '↑' then row1 = row1 .. ' <td class="l atr" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '↓' then row1 = row1 .. ' <td class="l abr" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '⇠' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l alb" colspan="2"> ' elseif v == '⇢' then row1 = row1 .. ' '				row2 = row2 .. '<td class="l arb" colspan="2"> ' elseif v == '⇡' then row1 = row1 .. ' <td class="l atr" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '⇣' then row1 = row1 .. ' <td class="l abr" rowspan="2"> ' row2 = row2 .. ' '			elseif v == '*' then -- unlinked crossing row1 = row1 .. ' '				row2 = row2 .. ' '			elseif v == '' then -- just skip. else -- content box local cols = tonumber(getArg(v..'_cols') or 3) local rows = tonumber(getArg(v..'_rows') or 1) row1 = row1 .. '<td colspan="' .. tostring(cols*2) .. '" rowspan="' .. tostring(rows*2) .. '" class="diagram-box'				local t = getArg(v..'_class')				if boxclass or t then					row1 = row1 .. ' ' .. tostring(boxclass) .. ' ' ..tostring(t)				end				row1 = row1 .. '"' t = getArg(v..'_id') if t then row1 = row1 .. ' id="' .. t ..'"' end t = getArg(v..'_boxstyle') or getArg(v..'_style') or getArg(v..'_css') if boxstyle or t then row1 = row1 .. ' style="' .. tostring(boxstyle) .. ';' .. tostring(t) .. '"' end row1 = row1 .. '>' .. trim(inputArgs[v] or '') .. ' '			end end if row1 ~= '' then str = str .. ' '..row1 .. ' ' .. row2 .. ' '		end return str .. ' '	end, }