Mô đun:2-ary truth table
Giao diện
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