Bước tới nội dung

Mô đun:2-ary truth table

Bách khoa toàn thư mở Wikipedia
local p = {}function p.main(frame)	local args = require('Module:Arguments').getArgs(frame)	-- table_headings includes the headings and the class for the heading	local table_headings = {		{frame:extensionTag("math",args['A'] or 'A',{}), ''},		{frame:extensionTag("math",args['B'] or 'B',{}), ''}	}	-- truth_table is the transpose of the rendered table	local truth_table = {		{false, false, true, true},		{false, true, false, true}	}	-- thick_border marks which columns have a thick left border	local thick_border = {false, false, true}	-- pre-process the inputs, saving data in the tables defined above	local col = 3	while args[6*(col-2) - 1] do		thick_border[col + 1] = string.lower(args[6*(col-2)] or '') == 'thick'		table_headings[col] = {args[6*(col-2) - 1], 'unsortable'}		truth_table[col] = {}		for i = 1,4 do			truth_table[col][i] = (tonumber(args[6*(col-3) + i]) or 0) == 1		end		col = col + 1	end	local total_cols = col - 1	-- start building the html table	root = mw.html.create('table')		:addClass('wikitable')		:addClass('sortable')		:addClass('two-ary-tt')	-- add headings	local row = root:tag('tr')	for col = 1,total_cols do		local headings = table_headings[col]		row:tag('th')			:addClass(headings[2] ~= '' and headings[2] or nil)			:addClass(thick_border[col] and 'border' or nil)			:wikitext(headings[1])	end	-- add rows	for i = 1,4 do		row = root:tag('tr')		for j = 1,total_cols do			local val = truth_table[j][i]			row:tag('td')				:addClass((j < 3) and 'bold' or nil)				:addClass(thick_border[j] and 'border' or nil)				:addClass(val and 't' or 'f')				:wikitext(val and 'T' or 'F')		end	end	-- get the templatestyles	local templatestyles = frame:extensionTag{		name = 'templatestyles', args = { src = 'Template:2-ary truth table/style.css' }	}		-- return the templatestyles plus the html table	return templatestyles .. tostring(root)endreturn p