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 = -- truth_table is the transpose of the rendered table local truth_table = -- thick_border marks which columns have a thick left border local thick_border =
-- 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 )
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 -- return the templatestyles plus the html table return templatestyles .. tostring(root)end
return p