Module:Sandbox/Ahecht/bartable
< Module:Sandbox | Ahecht
File:Test Template Info-Icon - Version (2).svg Module documentation[view] [edit] [history] [purge]
| File:Ambox warning blue construction.svg | This module is rated as pre-alpha. It is incomplete and may or may not be in active development. Do not use it in article namespace pages. A module remains in pre-alpha until its developer, or another editor who adopts it if it is abandoned for some time, considers the basic structure complete. |
Usage
[edit source]{{#invoke:Sandbox/Ahecht/bartable|function_name}}
Examples
[edit source]Real-world example
[edit source]{| class="wikitable"
|+ Melting point at 1 atmosphere
! Substance !! Temperature !! colspan="2" | Relative size
|-
| Mercury || {{#invoke:Sandbox/Ahecht/bartable|bartable| -38.72|/C/F|-2|1em|background:silver}}
|-
| Bromine || {{#invoke:Sandbox/Ahecht/bartable|bartable| -7.10|/C/F|-2|1em|background:brown}}
|-
| Water || {{#invoke:Sandbox/Ahecht/bartable|bartable| 0|/C/F|-2|1em}}
|-
| Phosphorus || {{#invoke:Sandbox/Ahecht/bartable|bartable| 44.10|/C/F|-2|1em|background:red}}
|-
| Iodine || {{#invoke:Sandbox/Ahecht/bartable|bartable| 113.50|/C/F|-2|1em|background:indigo}}
|-
| Sulphur || {{#invoke:Sandbox/Ahecht/bartable|bartable| 115.36|/C/F|-2|1em|background:yellow}}
|}
| Substance | Temperature | Relative size | |
|---|---|---|---|
| Mercury | -38.72/C/F | ||
| Bromine | -7.10/C/F | ||
| Water | 0/C/F | ||
| Phosphorus | 44.10/C/F | ||
| Iodine | 113.50/C/F | ||
| Sulphur | 115.36/C/F | ||
2-column (only positive values)
[edit source]{| class="wikitable"
! Example || colspan="2" | Rendering
|-
| Only value || {{#invoke:Sandbox/Ahecht/bartable|bartable|272}}
|-
| Negative value || {{#invoke:Sandbox/Ahecht/bartable|bartable|-72}}
|-
| Math expression || {{#invoke:Sandbox/Ahecht/bartable|bartable|exp(1)*1e2}}
|-
| Value and unit (note added space) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272| km/h}}
|-
| Value and unit (link to definition) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272|[[Degree_(angle)|°]]}}
|-
| Value and unit (with formatting) || style="text-align: right;"|''θ'' = {{#invoke:Sandbox/Ahecht/bartable|bartable|272|°}}
|-
| Value and unit (with conversion) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272|/km/mi}}
|-
| Value and scale || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||1/(2^0.5)}}
|-
| Value and height || {{#invoke:Sandbox/Ahecht/bartable|bartable|272|||4px}}
|-
| Value and style || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||||background:blue;}}
|-
| Value with commas, and scale || {{#invoke:Sandbox/Ahecht/bartable|bartable|2,720||.1}}
|-
| The full monty || {{#invoke:Sandbox/Ahecht/bartable|bartable|18^2|%|sin(1)|2em|border:ridge red;}}
|-
|}
| Example | Rendering | |
|---|---|---|
| Only value | — | |
| Negative value | — | |
| Math expression | — | |
| Value and unit (note added space) | 272 km/h | |
| Value and unit (link to definition) | 272° | |
| Value and unit (with formatting) | θ = 272° | |
| Value and unit (with conversion) | 272/km/mi | |
| Value and scale | 272 | |
| Value and height | 272 | |
| Value and style | 272 | |
| Value with commas, and scale | 2,720 | |
| The full monty | 18^2% | |
3-column (positive and negative values)
[edit source]{| class="wikitable"
! Example || colspan="3" | Rendering
|-
| Only value || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||-1}}
|-
| Negative value || {{#invoke:Sandbox/Ahecht/bartable|bartable|-72||-1}}
|-
| Math expression || {{#invoke:Sandbox/Ahecht/bartable|bartable|exp(1)*1e2||-1}}
|-
| Value and unit (note added space) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272| km/h|-1}}
|-
| Value and unit (link to definition) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272|[[Degree_(angle)|°]]|-1}}
|-
| Value and unit (with formatting) || style="text-align: right;"|''θ'' = {{#invoke:Sandbox/Ahecht/bartable|bartable|272|°|-1}}
|-
| Value and unit (with conversion) || {{#invoke:Sandbox/Ahecht/bartable|bartable|272|/km/mi|-1}}
|-
| Value and scale || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||-1/(2^0.5)}}
|-
| Value and height || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||-1|4px}}
|-
| Value and style || {{#invoke:Sandbox/Ahecht/bartable|bartable|272||-1||background:blue;}}
|-
| Value with commas, and scale || {{#invoke:Sandbox/Ahecht/bartable|bartable|2,720||-.1}}
|-
| The full monty || {{#invoke:Sandbox/Ahecht/bartable|bartable|18^2|%|sin(-1)|2em|border:ridge red;}}
|-
|}
| Example | Rendering | ||
|---|---|---|---|
| Only value | 272 | ||
| Negative value | -72 | ||
| Math expression | exp(1)*1e2 | ||
| Value and unit (note added space) | 272 km/h | ||
| Value and unit (link to definition) | 272° | ||
| Value and unit (with formatting) | θ = 272° | ||
| Value and unit (with conversion) | 272/km/mi | ||
| Value and scale | 272 | ||
| Value and height | 272 | ||
| Value and style | 272 | ||
| Value with commas, and scale | 2,720 | ||
| The full monty | 18^2% | ||
local p = {}
local metatable = { -- Append to array by calling it
__call = function (t, v) t[#t+1] = v end,
__tostring = function(t) return table.concat(t) end
}
local function notblank(v) return v or '' ~= '' end
local function ifblank(v, a) return notblank(v) and v or a end
function p._bartable(args)
local frame = mw.getCurrentFrame()
local function expr(v, a)
v = frame:callParserFunction('formatnum', {ifblank(v, a), 'R'})
v = frame:callParserFunction('#expr', v)
return tonumber(ifblank(v, a)) or a
end
local output = setmetatable({'—'}, metatable)
if notblank(args[2]) then
local titleparts = mw.text.split(args[2], '/', true)
if notblank(titleparts[2]) then
if notblank(titleparts[1]) then
output[1] = (args[1] or '') .. args[2]
else
local convert = require('Module:Convert')
local frame = frame:newChild{
title = 'Template:Convert',
args = {titleparts[2] or '', titleparts[3] or '', titleparts[4] or '', abbr='on'}
}
output[1] = convert(frame)
end
else
output[1] = (args[1] or '') .. args[2]
end
end
local arg1 = expr(args[1], 0)
local arg3 = expr(args[3], 1)
local width = math.abs(arg3) * arg1
local height = ifblank(args[4], '2ex')
if arg3 < 0 then
output('||')
if arg1 < 0 then
output('align="right" | <div style="width:' ..
(-1 * width) .. 'px;height:' .. height ..
';background:#aaa;color:inherit;' .. ifblank(args[5], '') ..
'"> </div>'
)
end
end
output('\n|')
if arg1 > 0 then
output('align="left" | <span style="display:none;">' ..
arg1 .. '</span><div style="width:' .. width .. 'px;height:' ..
height .. ';background:#aaa;color:inherit;' ..
ifblank(args[5] or '') .. '"> </div>'
)
end
return output
end
function p.bartable(frame)
return p._bartable(frame.args)
end
function p.bartableTemplate(frame)
return p._bartable(frame:getParent().args)
end
return p