Modul:TreeChart
Vzhled
TreeChart může být použit k vytvoření rodokmenů, kladogramů a jiných stromů.
Použití
Modul podle zadaného klíče seskládá čtverec spojení položek grafu. Pro každý vyplněný směr (po směru hodinových ručiček: A vzhůru, B vpravo, C dolů, D vlevo) zobrazí čáru. Pokud je za písmenem ještě vlnovka, zobrazí přerušovanou čáru, pokud P, zobrazí tečkovanou čáru. Používá se ve dvojici, první s označením 1 tvoří první řádek modulu, druhá s označením 2 tvoří druhý řádek modulu.
Modul byl specificky připraven pro šablonu Šablona:Rodokmen/step2. Použití modulu v šabloně vypadá následovně:
{{Rodokmen/step2
|row1 "on2"={{#invoke:TreeChart|treechart|A~BP|1}}|
|row2 "on2"={{#invoke:TreeChart|treechart|A~BP|2}}|
}}
⇓ VÝSTUP ŠABLONY ⇓
Chyba Lua na řádku 19: bad argument #2 to 'sub' (number expected, got string).Chyba Lua na řádku 19: bad argument #2 to 'sub' (number expected, got string).⇑ VÝSTUP ŠABLONY ⇑
local p = {}
function p.treechart (frame)
local pattern = frame.args[1]
local char = frame.args[2]
local dirs = {'A', 'B', 'C', 'D'}
local res = {}
local row1 = '|row1 "' .. char .. '"=<td colspan="2" style="$1$"><div style="width: 1em; height: 1em;"><span style="font: 1px/1px serif;"> </span></div></td><td colspan="2" style="$1$"><div style="width: 1em; height: 1em;"><span style="font: 1px/1px serif;"> </span></div></td>|'
local row2 = '|row2 "' .. char .. '"=<td colspan="2" style="$1$"><div style="width: 1em; height: 1em;"><span style="font: 1px/1px serif;"> </span></div></td><td colspan="2" style="$1$"><div style="width: 1em; height: 1em;"><span style="font: 1px/1px serif;"> </span></div></td>|'
local type = ''
for _, dir in pairs(dirs) do
match = string.match(pattern, dir .. '([^ABCD]*)')
if match then
table.insert(res, match[1])
table.insert(res, match[2])
end
end
row1 = string.sub(row1, '\$1\$', '')
row2 = string.sub(row2, '\$1\$', '')
table.insert(res, row1)
table.insert(res, row2)
return table.concat(res)
end
return p