Moduł:odmiana-przymiotnik-czeski: Różnice pomiędzy wersjami
[wersja przejrzana] | [wersja przejrzana] |
Usunięta treść Dodana treść
oszczedniej |
wymiana spolglosek w temacie przymiotnikow odmiany twardej (Specjalna:Diff/7503568) |
||
Linia 33: | Linia 33: | ||
end |
end |
||
function appendHardDeclensionFormsTo( t, stem ) |
function appendHardDeclensionFormsTo( t, stem, stem2 ) |
||
appendHeaderTo( t, false ) |
appendHeaderTo( t, false ) |
||
Linia 41: | Linia 41: | ||
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
||
:tag( 'td' ):wikitext( stem .. 'é' ):done() |
:tag( 'td' ):wikitext( stem .. 'é' ):done() |
||
:tag( 'td' ):wikitext( |
:tag( 'td' ):wikitext( stem2 .. 'í' ):done() |
||
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done() |
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done() |
||
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
||
Linia 73: | Linia 73: | ||
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
||
:tag( 'td' ):wikitext( stem .. 'é' ):done() |
:tag( 'td' ):wikitext( stem .. 'é' ):done() |
||
:tag( 'td' ):wikitext( |
:tag( 'td' ):wikitext( stem2 .. 'í' ):done() |
||
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done() |
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done() |
||
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
:tag( 'td' ):wikitext( stem .. 'á' ):done() |
||
Linia 195: | Linia 195: | ||
:tag( 'td' ):wikitext( stem .. 'ým' ):done() |
:tag( 'td' ):wikitext( stem .. 'ým' ):done() |
||
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ými' ):done() |
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ými' ):done() |
||
end |
|||
function makeMasculinePluralHardStem( stem ) |
|||
local last1 = mw.ustring.sub( stem, -1 ) |
|||
local last2 = mw.ustring.sub( stem, -2 ) |
|||
if last2 == 'ch' then |
|||
return mw.ustring.sub( stem, 1, -3 ) .. 'š' |
|||
elseif last1 == 'h' then |
|||
return mw.ustring.sub( stem, 1, -2 ) .. 'z' |
|||
elseif last2 == 'ck' then |
|||
return mw.ustring.sub( stem, 1, -3 ) .. 'čt' |
|||
elseif last2 == 'sk' then |
|||
return mw.ustring.sub( stem, 1, -3 ) .. 'št' |
|||
elseif last1 == 'k' then |
|||
return mw.ustring.sub( stem, 1, -2 ) .. 'c' |
|||
elseif last1 == 'r' then |
|||
return mw.ustring.sub( stem, 1, -2 ) .. 'ř' |
|||
else |
|||
return stem |
|||
end |
|||
end |
end |
||
Linia 207: | Linia 228: | ||
if mw.ustring.sub( base, -1 ) == 'ý' then -- mlad/ý |
if mw.ustring.sub( base, -1 ) == 'ý' then -- mlad/ý |
||
local stem = mw.ustring.sub( base, 1, -2 ) |
local stem = mw.ustring.sub( base, 1, -2 ) |
||
local stem2 = makeMasculinePluralHardStem( stem ) |
|||
appendHardDeclensionFormsTo( t, stem ) |
appendHardDeclensionFormsTo( t, stem, stem2 ) |
||
elseif mw.ustring.sub( base, -1 ) == 'í' then -- jarn/í |
elseif mw.ustring.sub( base, -1 ) == 'í' then -- jarn/í |
||
local stem = mw.ustring.sub( base, 1, -2 ) |
local stem = mw.ustring.sub( base, 1, -2 ) |
Wersja z 23:46, 17 gru 2020
Moduł wykorzystywany przez szablon {{odmiana-przymiotnik-czeski}}.
function appendHeaderTo( t, mergePlurals )
local frame = mw.getCurrentFrame()
local pluralAttrs
if mergePlurals then
pluralAttrs = { rowspan = 2 }
else
pluralAttrs = { colspan = 4 }
end
t:tag( 'tr' )
:tag( 'th' ):attr( 'rowspan', 2 ):wikitext( '[[przypadek]]' ):done()
:tag( 'th' ):attr( 'colspan', 4 ):wikitext( "''liczba pojedyncza''" ):done()
:tag( 'th' ):attr( pluralAttrs ):wikitext( "''liczba mnoga''" )
local addGenderColumns = function ( row )
row:tag( 'td' ):addClass( 'forma' ):wikitext(
frame:expandTemplate{ title = 'm' } .. ' ' .. frame:expandTemplate{ title = 'żw' }
)
row:tag( 'td' ):addClass( 'forma' ):wikitext(
frame:expandTemplate{ title = 'm' } .. ' ' .. frame:expandTemplate{ title = 'nżw' }
)
row:tag( 'td' ):addClass( 'forma' ):wikitext( frame:expandTemplate{ title = 'ż' } )
row:tag( 'td' ):addClass( 'forma' ):wikitext( frame:expandTemplate{ title = 'n' } )
end
local pluralRow = t:tag( 'tr' )
addGenderColumns( pluralRow )
if not mergePlurals then
addGenderColumns( pluralRow )
end
end
function appendHardDeclensionFormsTo( t, stem, stem2 )
appendHeaderTo( t, false )
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[mianownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ý' ):done()
:tag( 'td' ):wikitext( stem .. 'á' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem2 .. 'í' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'á' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[dopełniacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ého' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'ého' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ých' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[celownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ému' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'ému' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ým' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[biernik]]' ):done()
:tag( 'td' ):wikitext( stem .. 'ého' ):done()
:tag( 'td' ):wikitext( stem .. 'ý' ):done()
:tag( 'td' ):wikitext( stem .. 'ou' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):attr( 'colspan', 3 ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'á' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[wołacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ý' ):done()
:tag( 'td' ):wikitext( stem .. 'á' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem2 .. 'í' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'á' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[miejscownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ém' ):done()
:tag( 'td' ):wikitext( stem .. 'é' ):done()
:tag( 'td' ):wikitext( stem .. 'ém' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ých' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[narzędnik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ým' ):done()
:tag( 'td' ):wikitext( stem .. 'ou' ):done()
:tag( 'td' ):wikitext( stem .. 'ým' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ými' ):done()
end
function appendSoftDeclensionFormsTo( t, stem )
appendHeaderTo( t, true )
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[mianownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'í' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[dopełniacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ího' ):done()
:tag( 'td' ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):wikitext( stem .. 'ího' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ích' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[celownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ímu' ):done()
:tag( 'td' ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):wikitext( stem .. 'ímu' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ím' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[biernik]]' ):done()
:tag( 'td' ):wikitext( stem .. 'ího' ):done()
:tag( 'td' ):attr( 'colspan', 3 ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'í' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[wołacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'í' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[miejscownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ím' ):done()
:tag( 'td' ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):wikitext( stem .. 'ím' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ích' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[narzędnik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ím' ):done()
:tag( 'td' ):wikitext( stem .. 'í' ):done()
:tag( 'td' ):wikitext( stem .. 'ím' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ími' ):done()
end
function appendMixedDeclensionFormsTo( t, stem, base )
appendHeaderTo( t, false )
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[mianownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( base or stem ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
:tag( 'td' ):wikitext( stem .. 'o' ):done()
:tag( 'td' ):wikitext( stem .. 'i' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'y' ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[dopełniacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'a' ):done()
:tag( 'td' ):wikitext( stem .. 'y' ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ých' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[celownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'u' ):done()
:tag( 'td' ):wikitext( stem .. 'ě' ):done()
:tag( 'td' ):wikitext( stem .. 'u' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ým' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[biernik]]' ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
:tag( 'td' ):wikitext( stem ):done()
:tag( 'td' ):wikitext( stem .. 'u' ):done()
:tag( 'td' ):wikitext( stem .. 'o' ):done()
:tag( 'td' ):attr( 'colspan', 3 ):wikitext( stem .. 'y' ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[wołacz]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
:tag( 'td' ):wikitext( stem .. 'o' ):done()
:tag( 'td' ):wikitext( stem .. 'i' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'y' ):done()
:tag( 'td' ):wikitext( stem .. 'a' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[miejscownik]]' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ě' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ých' ):done()
t:tag( 'tr' )
:tag( 'td' ):addClass( 'forma' ):wikitext( '[[narzędnik]]' ):done()
:tag( 'td' ):attr( 'colspan', 2 ):wikitext( stem .. 'ým' ):done()
:tag( 'td' ):wikitext( stem .. 'ou' ):done()
:tag( 'td' ):wikitext( stem .. 'ým' ):done()
:tag( 'td' ):attr( 'colspan', 4 ):wikitext( stem .. 'ými' ):done()
end
function makeMasculinePluralHardStem( stem )
local last1 = mw.ustring.sub( stem, -1 )
local last2 = mw.ustring.sub( stem, -2 )
if last2 == 'ch' then
return mw.ustring.sub( stem, 1, -3 ) .. 'š'
elseif last1 == 'h' then
return mw.ustring.sub( stem, 1, -2 ) .. 'z'
elseif last2 == 'ck' then
return mw.ustring.sub( stem, 1, -3 ) .. 'čt'
elseif last2 == 'sk' then
return mw.ustring.sub( stem, 1, -3 ) .. 'št'
elseif last1 == 'k' then
return mw.ustring.sub( stem, 1, -2 ) .. 'c'
elseif last1 == 'r' then
return mw.ustring.sub( stem, 1, -2 ) .. 'ř'
else
return stem
end
end
function main( frame )
local base = frame.args.base
local comparative = frame.args.comparative
local t = mw.html.create( 'table' )
t:addClass( 'wikitable' ):addClass( 'odmiana' ):addClass( 'adj' )
t:css( 'border', 'none' )
if mw.ustring.sub( base, -1 ) == 'ý' then -- mlad/ý
local stem = mw.ustring.sub( base, 1, -2 )
local stem2 = makeMasculinePluralHardStem( stem )
appendHardDeclensionFormsTo( t, stem, stem2 )
elseif mw.ustring.sub( base, -1 ) == 'í' then -- jarn/í
local stem = mw.ustring.sub( base, 1, -2 )
appendSoftDeclensionFormsTo( t, stem )
elseif mw.ustring.sub( base, -2 ) == 'ův' then -- otc/ův (otcov)
local stem = mw.ustring.sub( base, 1, -3 ) .. 'ov'
appendMixedDeclensionFormsTo( t, stem, base )
elseif mw.ustring.sub( base, -2 ) == 'in' then -- matčin
appendMixedDeclensionFormsTo( t, base )
else
error( 'nieobsługiwana końcówka przymiotnika', 0 )
end
if comparative == '' then
-- no-op
elseif comparative == 'brak' then
local innerTable = mw.html.create( 'table' )
innerTable:addClass( 'wikitable' ):addClass( 'odmiana' ):addClass( 'adj' )
innerTable:css{ width = '100%', margin = '5px 0 0 0' }
innerTable:tag( 'tr' )
:tag( 'th' ):attr( 'colspan', 9 )
:tag( 'strong' ):wikitext( 'nie stopniuje się' )
t:tag( 'tr' )
:tag( 'td' ):attr( 'colspan', 9 ):css{ padding = 0, border = 'none' }
:node( innerTable )
elseif mw.ustring.sub( comparative, -1 ) == 'í' then
local compTable = mw.html.create( 'table' )
compTable:addClass( 'wikitable' ):addClass( 'odmiana' ):addClass( 'adj' )
compTable:addClass( 'collapsible' ):addClass( 'collapsed' )
compTable:css{ width = '100%', margin = '5px 0 0 0' }
local compLabel = ' stopień wyższy <strong>' .. comparative .. '</strong>'
compTable:tag( 'tr' )
:tag( 'th' ):attr( 'colspan', 9 ):wikitext( compLabel )
local compStem = mw.ustring.sub( comparative, 1, -2 )
appendSoftDeclensionFormsTo( compTable, compStem )
t:tag( 'tr' )
:tag( 'td' ):attr( 'colspan', 9 ):css{ padding = 0, border = 'none' }
:node( compTable )
local supTable = mw.html.create( 'table' )
supTable:addClass( 'wikitable' ):addClass( 'odmiana' ):addClass( 'adj' )
supTable:addClass( 'collapsible' ):addClass( 'collapsed' )
supTable:css{ width = '100%', margin = '5px 0 0 0' }
local superlative = 'nej' .. comparative
local supLabel = ' stopień najwyższy <strong>' .. superlative .. '</strong>'
supTable:tag( 'tr' )
:tag( 'th' ):attr( 'colspan', 9 ):wikitext( supLabel )
local supStem = mw.ustring.sub( superlative, 1, -2 )
appendSoftDeclensionFormsTo( supTable, supStem )
t:tag( 'tr' )
:tag( 'td' ):attr( 'colspan', 9 ):css{ padding = 0, border = 'none' }
:node( supTable )
else
error( 'nielegalny parametr stopnia wyższego', 0 )
end
local nav = mw.html.create( 'div' )
nav:addClass( 'NavFrame' ):addClass( 'collapse-odmiana' )
nav:css( 'display', 'inline' )
nav:tag( 'div' ):addClass( 'NavHead' ):css{
background = 'transparent',
[ 'text-align' ] = 'left',
[ 'padding-right' ] = '55px',
display = 'inline'
}
nav:tag( 'div' ):addClass( 'NavContent' ):css{
[ 'text-align' ] = 'left',
display = 'inline'
}:node( t )
return nav
end
return { main = main }