 require 'module nou800 globals local pu800 local cells mwu800u82eloaddata 'module tree chart data' function pu800u82e_main cell_args local retu800 mwu800u82ehtmlu82ecreate local topu800 retu800 tagu800 'tru800' cssu800 height '1pxu800' 'text align' 'center' local bottom retu800 tagu800 'tru800' cssu800 height '1pxu800' 'text align' 'center' foru800 _u800 vu800 inu800 ipairs cell_args dou800 ifu800 type vu800 'string' then topu800 wikitext cells vu800 .tu800 bottom wikitext cells vu800 .bu800 else topu800 tagu800 'tdu800' attr colspan vu800u82ecolspan oru800 cell_argsu82ecolspan oru800 6u800 rowspan vu800u82erowspan oru800 cell_argsu82erowspan oru800 2u800 cssu800 padding '0u800u82e2emu800' border vu800u82eborder oru800 cell_argsu82eborder oru800 '2u800' .. 'pxu800 solid black' csstext vu800u82eboxstyle oru800 cell_argsu82eboxstyle wikitext vu800u82etext endu800 endu800 return tostring retu800 endu800 function pu800u82emain frame local args require 'module arguments .getargs frame wrappers 'template tree chart' trim false removeblanks false local cell_args colspan argsu82ecolspan rowspan argsu82erowspan border argsu82eborder boxstyle argsu82eboxstyle foru800 _u800 valu800 inu800 ipairs args dou800 local trimmedval valu800 match ' su800* . su800* ' ifu800 trimmedval   then trimmedval ' ' endu800 ifu800 cells trimmedval then tableu82einsert cell_args trimmedval else unnamed params behave weirdly white space atu800 theu800 front counts foru800 param_ 1u800 butu800 notu800 whitespace atu800 theu800 endu800 sou800 remove itu800 local lefttrimmedval valu800 gsub ' su800 '   tableu82einsert cell_args text args trimmedval oru800 ' '..trimmedval..' ' colspan args 'colspan_'..lefttrimmedval rowspan args 'rowspan_'..lefttrimmedval border args 'border_'..lefttrimmedval boxstyle args 'boxstyle_'..lefttrimmedval endu800 endu800 return pu800u82e_main cell_args endu800 return pu800 