Module:Tree chart
Appearance
![]() | This Lua module is used on approximately 9,900 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
Usage
Implements Template:Tree chart; Full documentation on chart syntax exists at Template:Tree chart/doc
This module uses the mw.html library to create rows of table cells whose borders draw lines to show relationships between elements. When an unnamed parameter matches a key in Module:Tree chart/data, the module will create a block with stylings as defined in the table. Each key in the table has a subtable with 0, 1, or 2 keys of its own: t
for the "top" row and b
for the "bottom row". Any unnamed parameter whose value does not exist in the table will be used to create elements on the chart, and additional named parameters for that value will be looked for.
local p = {}
local SLD = '1px solid black'
local DSH = '1px dashed black'
local DOT = '1px dotted black'
local cells = {
['!b'] = { },
['!t'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['%b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['%t'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['\'b'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['\'t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['(b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['(t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
[')b'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
[')t'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['*b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['*t'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['+b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['+t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
[',b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
[',t'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['-b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['-t'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['.b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['.t'] = { { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['7b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['7t'] = { { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
[':b'] = { },
[':t'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Ab'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['At'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Cb'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Ct'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Db'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Dt'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Fb'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Ft'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Gb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Gt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Hb'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Ht'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Jb'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Jt'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Lb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Lt'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Mb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Mt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Pb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Pt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Qb'] = { },
['Qt'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Rb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Rt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Sb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['St'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['T3b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['T3t'] = { { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Tb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Tt'] = { { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['Vb'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Vt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Wb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Wt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Yb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['Yt'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Zb'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['Zt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['^b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['^t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['$b'] = { },
['$t'] = { { tag = 'td', attr = { colspan = '2', rowspan = '2'}, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '2em' } } } },
['`b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['`t'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['a2b'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['a2t'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ab'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['at'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['b2b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['b2t'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['b3b'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['b3t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['bb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['bt'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['cb'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ct'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['db'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['dt'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['eb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['et'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['fb'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ft'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['hb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['ht'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ib'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['it'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['jb'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['jt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['k2b'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['k2t'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['k3b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['k3t'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['kb'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['kt'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['l2b'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['l2t'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['l3b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['l3t'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['lb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['lt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['m2b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['m2t'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['mb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['mt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['n2b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['n2t'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['nb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['nt'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['o2b'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['o2t'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ob'] = { { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['ot'] = { { tag = 'td', attr = { rowspan = '2' }, style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } }, { tag = 'td', style = { ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['p2b'] = { { tag = 'td', style = { ['border-right'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['p2t'] = { { tag = 'td', style = { ['border-right'] = DSH, ['border-bottom'] = '1px dotted #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['pb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['pt'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', attr = { rowspan = '2' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '2em' } } } },
['q2b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['q2t'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = '1px dashed #000001' }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['qb'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['qt'] = { { tag = 'td', style = { ['border-right'] = DOT, ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['r2b'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['r2t'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['rb'] = { { tag = 'td', style = { ['border-right'] = DOT }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['rt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['tb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['tt'] = { { tag = 'td', style = { ['border-right'] = SLD, ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['vb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['vt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = SLD }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['xb'] = { },
['xt'] = { },
['yb'] = { { tag = 'td', style = { ['border-right'] = SLD }, node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } }, { tag = 'td', node = { tag = 'div', style = { ['width'] = '1em', ['height'] = '1em' } } } },
['yt'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['~b'] = { { tag = 'td', attr = { colspan = '2' }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } },
['~t'] = { { tag = 'td', attr = { colspan = '2' }, style = { ['border-bottom'] = DSH }, node = { tag = 'div', style = { ['width'] = '2em', ['height'] = '1em' } } } }
}
function p.main(frame)
local args = frame:getParent().args
local cell_args = {}
for i, v in ipairs(args) do
local w = mw.text.trim(v)
if not w:find('%S') then
w = '$'
end
local cell_x = { }
if cells[w..'t'] then
cell_x.box = nil
cell_x.name = w..'t'
else
cell_x.name = mw.text.trim(v)
local args_v = args[cell_x.name]
if args_v then
cell_x.text = args_v
else
cell_x.text = '{{{'..w..'}}}'
end
cell_x.box = true
cell_x.colspan = args['colspan_'..w] or args.colspan or '6'
cell_x.rowspan = args['rowspan_'..w] or args.rowspan or '2'
cell_x.thick = args['border_'..w] or args.border or '2'
cell_x.css = args['boxstyle_'..w] or args.boxstyle or ''
end
table.insert(cell_args,cell_x)
end
return p._main(cell_args)
end
function p._main(cell_args)
local ret = mw.html.create('tr')
:css({ ['height'] = '1px',
['text-align'] = 'center' })
for i, v in ipairs(cell_args) do
if v.box then
ret:node(make_box(v))
else
ret:node(make_cell(v.name))
end
end
local ret2 = mw.html.create('tr')
:css({ ['height'] = '1px',
['text-align'] = 'center' })
:done()
return tostring(ret:done()) .. tostring(ret2)
end
function make_cell(name)
local props = cells[name]
if not props then
return
end
local ret = ''
for i, v in ipairs(props) do
ret = ret .. tostring(make_tag(v))
end
return ret
end
function make_tag(tbl)
local ret = mw.html.create(tbl.tag)
if tbl.style then
for n, s in pairs(tbl.style) do
ret:css(n,s)
end
end
if tbl.attr then
for n, s in pairs(tbl.attr) do
ret:attr(n,s)
end
end
if tbl.node then
ret:node(make_tag(tbl.node))
end
return ret:done()
end
function make_box(tbl)
local ret = mw.html.create('td')
:attr('colspan',tbl.colspan)
:attr('rowspan',tbl.rowspan)
:css({ ['padding'] = '0.2em',
['border'] = tbl.thick .. 'px solid black' })
:cssText(tbl.css)
:wikitext(tbl.text)
:done()
return ret
end
return p