Module:2-ary truth table
Appearance
| This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| This module depends on the following other modules: |
| This module uses TemplateStyles: |
This module implements {{2-ary truth table}}
Usage
{{#invoke:2-ary truth table|main}}
local p = {}
function p.main(frame)
local args = require('Module:Arguments').getArgs(frame)
-- fill in the table
local table_headings = {
{frame:extensionTag("math",args['A'] or 'A',{}), ''},
{frame:extensionTag("math",args['B'] or 'B',{}), ''}
}
local truth_table = {
{false, false, true, true},
{false, true, false, true}
}
local thick_border = {false, false, true}
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-2) - 5]) or 0) == 1
end
col = col + 1
end
local total_cols = col - 1
-- start 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
local templatestyles = frame:extensionTag{
name = 'templatestyles', args = { src = 'Template:2-ary truth table/style.css' }
}
return templatestyles .. tostring(root)
end
return p