Jump to content

Module:Tree chart

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by The Mol Man (talk | contribs) at 23:24, 14 December 2014 (test...). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

local p = {}

local SLD = '1px solid black'
local DSH = '1px dashed black'
local DOT = '1px dotted black'

local cells = {
	['!b'] = '	',
	['!t'] = '<td rowspan="2" style="border-right: 1px solid black;"><div style="width: 1em; height: 2em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['%b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['%t'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['\'b'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['\'t'] = '<td style="border-right: 1px solid black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['(b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['(t'] = '<td style="border-right: 1px solid black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	[')b'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	[')t'] = '<td rowspan="2" style="border-right: 1px solid black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['*b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['*t'] = '<td style="border-right: 1px dashed black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['+b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['+t'] = '<td style="border-right: 1px solid black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	[',b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	[',t'] = '<td><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['-b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['-t'] = '<td colspan="2" style="border-bottom: 1px solid black;"><div style="width: 2em; height: 1em;"></div></td>',
	['.b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['.t'] = '<td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['7b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['7t'] = '<td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	[':b'] = '	',
	[':t'] = '<td rowspan="2" style="border-right: 1px dashed black;"><div style="width: 1em; height: 2em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Ab'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['At'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Cb'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Ct'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Db'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['Dt'] = '<td rowspan="2" style="border-right: 1px dashed black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Fb'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['Ft'] = '<td><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Gb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Gt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Hb'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['Ht'] = '<td rowspan="2" style="border-right: 1px dotted black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Jb'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['Jt'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Lb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['Lt'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Mb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['Mt'] = '<td colspan="2" style="border-bottom: 1px dotted black;"><div style="width: 2em; height: 1em;"></div></td>',
	['Pb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['Pt'] = '<td colspan="2" style="border-bottom: 1px dotted black;"><div style="width: 2em; height: 1em;"></div></td>',
	['Qb'] = '',
	['Qt'] = '<td rowspan="2" style="border-right: 1px dotted black;"><div style="width: 1em; height: 2em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Rb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['Rt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Sb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['St'] = '<td><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['T3b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['T3t'] = '<td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Tb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Tt'] = '<td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['Vb'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['Vt'] = '<td colspan="2" style="border-bottom: 1px dashed black;"><div style="width: 2em; height: 1em;"></div></td>',
	['Wb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['Wt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Yb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['Yt'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['Zb'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['Zt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['^b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['^t'] = '<td style="border-right: 1px solid black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['$b'] = '	',
	['$t'] = '<td rowspan="2" colspan="2"><div style="width: 2em; height: 2em;"></div></td>',
	['`b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['`t'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['a2b'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['a2t'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dashed #000001;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['ab'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['at'] = '<td style="border-right: 1px dotted black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['b2b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['b2t'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dotted #000001;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['b3b'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['b3t'] = '<td style="border-right: 1px solid black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['bb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['bt'] = '<td style="border-right: 1px solid black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['cb'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['ct'] = '<td style="border-right: 1px dashed black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['db'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['dt'] = '<td rowspan="2" style="border-right: 1px dashed black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['eb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['et'] = '<td style="border-right: 1px solid black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['fb'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['ft'] = '<td rowspan="2" style="border-right: 1px solid black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['hb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['ht'] = '<td style="border-right: 1px solid black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['ib'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['it'] = '<td style="border-right: 1px dashed black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['jb'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['jt'] = '<td colspan="2" style="border-bottom: 1px solid black;"><div style="width: 2em; height: 1em;"></div></td>',
	['k2b'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['k2t'] = '<td rowspan="2" style="border-right: 1px dotted black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['k3b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['k3t'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['kb'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['kt'] = '<td rowspan="2" style="border-right: 1px dotted black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['l2b'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['l2t'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dashed #000001;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['l3b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['l3t'] = '<td style="border-right: 1px solid black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['lb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['lt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['m2b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['m2t'] = '<td colspan="2" style="border-bottom: 1px dotted black;"><div style="width: 2em; height: 1em;"></div></td>',
	['mb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['mt'] = '<td colspan="2" style="border-bottom: 1px dotted black;"><div style="width: 2em; height: 1em;"></div></td>',
	['n2b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['n2t'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dotted #000001;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['nb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['nt'] = '<td style="border-right: 1px solid black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['o2b'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['o2t'] = '<td rowspan="2" style="border-right: 1px dashed black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['ob'] = '<td><div style="width: 1em; height: 1em;"></div></td>',
	['ot'] = '<td rowspan="2" style="border-right: 1px solid black;"><div style="width: 1em; height: 2em;"></div></td><td style="border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td>',
	['p2b'] = '<td style="border-right: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['p2t'] = '<td style="border-right: 1px dashed black; border-bottom: 1px dotted #000001;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['pb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['pt'] = '<td style="border-right: 1px solid black; border-bottom: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td rowspan="2"><div style="width: 1em; height: 2em;"></div></td>',
	['q2b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['q2t'] = '<td style="border-right: 1px dotted black; border-bottom: 1px dashed #000001;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['qb'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['qt'] = '<td style="border-right: 1px dotted black; border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td>',
	['r2b'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['r2t'] = '<td colspan="2" style="border-bottom: 1px dashed black;"><div style="width: 2em; height: 1em;"></div></td>',
	['rb'] = '<td style="border-right: 1px dotted black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['rt'] = '<td colspan="2" style="border-bottom: 1px solid black;"><div style="width: 2em; height: 1em;"></div></td>',
	['tb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['tt'] = '<td style="border-right: 1px solid black; border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td><td style="border-bottom: 1px dashed black;"><div style="width: 1em; height: 1em;"></div></td>',
	['vb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['vt'] = '<td colspan="2" style="border-bottom: 1px solid black;"><div style="width: 2em; height: 1em;"></div></td>',
	['xb'] = '	',
	['xt'] = '	',
	['yb'] = '<td style="border-right: 1px solid black;"><div style="width: 1em; height: 1em;"></div></td><td><div style="width: 1em; height: 1em;"></div></td>',
	['yt'] = '<td colspan="2" style="border-bottom: 1px dashed black;"><div style="width: 2em; height: 1em;"></div></td>',
	['~b'] = '<td colspan="2"><div style="width: 2em; height: 1em;"></div></td>',
	['~t'] = '<td colspan="2" style="border-bottom: 1px dashed black;"><div style="width: 2em; height: 1em;"></div></td>',
}

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:wikitext(cells[v.name]) --: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