Bước tới nội dung

Mô đun:TreeChart

Bách khoa toàn thư mở Wikipedia
require('strict')local p = {}local cells = mw.loadData('Mô đun:TreeChart/data')function p._main(cell_args)	local ret = mw.html.create()	local top = ret:tag('tr')						:css{ height = '1px',								['text-align'] = 'center' }	local bottom = ret:tag('tr')						:css{ height = '1px',								['text-align'] = 'center' }	for _, v in ipairs(cell_args) do		if type(v) == 'string' then			top:wikitext(cells[v].t)			bottom:wikitext(cells[v].b)		else			top:tag('td')				:attr{ colspan = v.colspan or cell_args.colspan or 6,						rowspan = v.rowspan or cell_args.rowspan or 2 }				:css{ padding = '0.2em',						border = (v.border or cell_args.border or '2') .. 'px solid black' }				:cssText(v.boxstyle or cell_args.boxstyle)				:wikitext(v.text)		end	end	return tostring(ret)endfunction p.main(frame)	local args = require('Mô đun:Arguments').getArgs(frame, {wrappers = 'Bản mẫu:Chart', trim = false, removeBlanks = false})	local cell_args = {		colspan = args.colspan,		rowspan = args.rowspan,		border = args.border,		boxstyle = args.boxstyle	}	for _, val in ipairs(args) do		local trimmedVal = val:match('^%s*(.-)%s*$')		if trimmedVal == '' then			trimmedVal = '$'		end		if cells[trimmedVal] then			table.insert(cell_args, trimmedVal)		else			-- Unnamed params behave weirdly			-- white space at the front counts for param_{{{1}}}, but not whitespace at the end, so remove it			local rightTrimmedVal = val:gsub('%s+$','')			table.insert(cell_args, {				text = args[trimmedVal] or ('{{{'..trimmedVal..'}}}'),				colspan = args['colspan_'..rightTrimmedVal],				rowspan = args['rowspan_'..rightTrimmedVal],				border = args['border_'..rightTrimmedVal],				boxstyle = args['boxstyle_'..rightTrimmedVal]			})		end	end		return p._main(cell_args)endreturn p