Modul:Sloveso (cs)
Dokumentaci tohoto modulu lze vytvořit na stránce Nápověda:Modul:Sloveso (cs)
local p = {}
-- Inserts arguments evaluating to true to the end of sequence
local function insertValid(sequence, ...)
local args = {...}
local count = select('#', ...)
for i = 1, count do
table.insert(sequence, args[i] or nil)
end
return sequence
end
local function concatValid(separator, ...)
local result = {}
insertValid(result, ...)
return table.concat(result, separator)
end
local function count(...)
local result = 0
for key, value in pairs({...}) do
if value then
result = result + 1
end
end
return result
end
local function countAndFormat(format, ...)
local cnt = count(...)
return cnt > 0 and string.format(format, cnt) or nil
end
function p.casovani(frame)
local args = frame:getParent().args
local styling = 'class="konjugace verbum floatleft" style="clear: none;"'
local function getArg(name)
return args[name] or '{{{' .. name .. '}}}'
end
local dok = args.dok == "ano"
local pre = args.pre ~= "skrýt"
local fut = (args.fut or "") ~= ""
local imp = args.imp ~= "skrýt"
local act = args.act ~= "skrýt"
local pas = args.pas ~= "skrýt"
local ptra = args.ptra ~= "skrýt"
local mtra = args.mtra ~= "skrýt"
local result = {}
local ncols
-- Údržbové kategorie
insertValid(result,
not pre and '[[Kategorie:Monitoring:Sloveso (cs)/pre/skrýt]]',
not imp and '[[Kategorie:Monitoring:Sloveso (cs)/imp/skrýt]]',
not act and '[[Kategorie:Monitoring:Sloveso (cs)/act/skrýt]]',
not pas and '[[Kategorie:Monitoring:Sloveso (cs)/pas/skrýt]]',
not ptra and '[[Kategorie:Monitoring:Sloveso (cs)/ptra/skrýt]]',
not mtra and '[[Kategorie:Monitoring:Sloveso (cs)/mtra/skrýt]]')
-- Oznamovací a rozkazovací způsob
ncols = count(pre, fut, imp)
if ncols > 0 then
local function radek(osoba, parPre, parFut, parImp)
return concatValid('\n',
'!' .. osoba .. '.',
pre and '|' .. parPre,
fut and '|' .. parFut,
imp and '|' .. (parImp or 'style="text-align:center"|—'),
'|-')
end
insertValid(result,
'{| ' .. styling,
'|+ Oznamovací a rozkazovací způsob',
'|-',
'!rowspan="3"|Číslo',
'!rowspan="3"|Osoba',
'!colspan="' .. ncols .. '"|Způsob a čas',
'|-',
countAndFormat('!colspan="%s" style="vertical-align: top;"|oznamovací', pre, fut),
imp and '!rowspan="2" style="vertical-align: top;"|rozkazovací',
'|-',
pre and (dok and '!budoucí' or '!přítomný'),
fut and '!budoucí',
'|-',
'!rowspan="3"|jednotné',
radek(1, getArg("spre1"), getArg("sfut1")),
radek(2, getArg("spre2"), getArg("sfut2"), getArg("simp2")),
radek(3, getArg("spre3"), getArg("sfut3")),
'!rowspan="3"|množné',
radek(1, getArg("ppre1"), getArg("pfut1"), getArg("pimp1")),
radek(2, getArg("ppre2"), getArg("pfut2"), getArg("pimp2")),
radek(3, getArg("ppre3"), getArg("pfut3")),
'|}')
end
-- Příčestí a přechodníky
ncols = count(act, pas, ptra, mtra)
if ncols > 0 then
insertValid(result,
'{| ' .. styling,
'|+ Příčestí a přechodníky',
'|-',
'!rowspan="2"|Číslo',
'!rowspan="2" colspan="2"|Rod',
countAndFormat('!colspan="%s"|Příčestí\n', act, pas),
countAndFormat('!colspan="%s"|Přechodník\n', ptra, mtra),
'|-',
act and '!činné',
pas and '!trpné',
ptra and (dok and '!budoucí' or '!přítomný'),
mtra and '!minulý',
'|-',
'!rowspan="3"|jednotné',
'!colspan="2"|mužský',
act and '|' .. getArg("sactm"),
pas and '|' .. getArg("spasm"),
ptra and '|' .. getArg("ptram"),
mtra and '|' .. getArg("mtram"),
'|-',
'!colspan="2"|ženský',
act and '|' .. getArg("sactf"),
pas and '|' .. getArg("spasf"),
ptra and '|rowspan="2"|' .. getArg("ptraf"),
mtra and '|rowspan="2"|' .. getArg("mtraf"),
'|-',
'!colspan="2"|střední',
act and '|' .. getArg("sactn"),
pas and '|' .. getArg("spasn"),
'|-',
'!rowspan="4"|množné',
'!colspan="2"|m. životný',
act and '|' .. getArg("pactm"),
pas and '|' .. getArg("ppasm"),
ptra and '|rowspan="4"|' .. getArg("ptrap"),
mtra and '|rowspan="4"|' .. getArg("mtrap"),
'|-',
'!colspan="2"|m. neživ.',
act and '|rowspan="2"|' .. getArg("pactf"),
pas and '|rowspan="2"|' .. getArg("ppasf"),
'|-',
'!colspan="2"|ženský',
'|-',
'!colspan="2"|střední',
act and '|' .. getArg("sactf"),
pas and '|' .. getArg("spasf"),
'|}')
end
insertValid(result, '<div style="clear:both"></div>')
return table.concat(result, '\n')
end
return p