Модул:mk-conj
Модул: Менување (конјугација) на македонски глаголи Овој модул обезбедува функционалност за автоматско менување на македонски глаголи според нивните видови на промена и аспекти.
Намена Главната намена на овој модул е да генерира табели за менување на македонски глаголи, кои лесно може да се вметнат во Викиречнички записи. Тоа има за цел да го намали рачниот напор и да обезбеди конзистентност во прикажувањето на спрегањето.
Употреба За да го користите овој модул во Викиречнички запис, можете да го повикате директно од шаблон. Повеќето функции на модулот го земаат инфинитивниот глагол како прв параметар и, доколку е потребно, аспект и дополнителни правила за поделба.
Примери за повикување преку Предлошка:
{{mk-verb-conj| {{PAGENAME}} | несвршен | }}
| прави | Еднина | Множина | |||||
|---|---|---|---|---|---|---|---|
| несвршен | прво | второ | трето | прво | второ | трето | |
| Прости глаголски форми | |||||||
| Сегашно време | правам | правиш | прави | правиме | правите | прават | |
| Минато определено несвршено време |
правев | правеше | правеше | правевме | правевте | правеа | |
| Заповеден начин | прави | правете | |||||
| Глаголска л-форма | м.р. | правел | правеле | ||||
| ж.р. | правела | ||||||
| с.р. | правело | ||||||
| Глаголска придавка | м.р. | правен | правени | ||||
| ж.р. | правена | ||||||
| с.р. | правено | ||||||
| Глаголска именка | правење | правења | |||||
| Глаголски прилог | правејќи | ||||||
| Сложени глаголски форми | |||||||
| Минато неопределено несвршенo време |
м.р. | сум правел | си правел | правел | сме правеле | сте правеле | правеле |
| ж.р. | сум правелa | си правелa | правела | ||||
| с.р. | правело | ||||||
| Предминато време | м.р. | бев правел | беше правел | беше правел | бевме правеле | бевте правеле | беа правеле |
| ж.р. | бев правела | беше правела | беше правела | ||||
| с.р. | беше правело | ||||||
| Идно време | ќе правам | ќе правиш | ќе прави | ќе правиме | ќе правите | ќе прават | |
| Минато идно време | ќе правев | ќе правеше | ќе правеше | ќе правевме | ќе правевте | ќе правеа | |
| Идно прекажано време | м.р. | ќе сум правел | ќе си правел | ќе правел | ќе сме правеле | ќе сте правеле | ќе правеле |
| ж.р. | ќе сум правела | ќе си правела | ќе правела | ||||
| с.р. | ќе правело | ||||||
| Можен начин | м.р. | би правел | би правел | би правел | би правеле | би правеле | би правеле |
| ж.р. | би правела | би правела | би правела | ||||
| с.р. | би правело | ||||||
| Има конструкција | имам правено | имаш правено | има правено | имаме правено | имате правено | имаат правено | |
| Сум конструкција | м.р. | сум правен | си правен | е правен | сме правени | сте правени | се правени |
| ж.р. | сум правена | си правена | е правена | ||||
| с.р. | е правено | ||||||
{{mk-verb-conj| {{PAGENAME}} | свршен | раздел }}
| Еднина | Множина | ||||||
|---|---|---|---|---|---|---|---|
| свршен | прво | второ | трето | прво | второ | трето | |
| и | Прости глаголски форми | ||||||
| Сегашно време | ам | ш | ме | те | ат | ||
| Минато определено свршено време |
ев | е | е | евме | евте | еа | |
| Заповеден начин | ???!?? | ???!?? | |||||
| Глаголска л-форма | м.р. | ел | еле | ||||
| ж.р. | ела | ||||||
| с.р. | ело | ||||||
| Глаголска придавка | м.р. | ен | ени | ||||
| ж.р. | ена | ||||||
| с.р. | ено
| ||||||
| Сложени глаголски форми | |||||||
| Минато неопределено свршенo време |
м.р. | сум ел | си ел | ел | сме еле | сте еле | еле |
| ж.р. | сум елa | си елa | ела | ||||
| с.р. | ело | ||||||
| Предминато време | м.р. | бев ел | беше ел | беше ел | бевме еле | бевте еле | беа еле |
| ж.р. | бев ела | беше ела | беше ела | ||||
| с.р. | беше ело | ||||||
| Идно време | ќе ам | ќе ш | ќе | ќе ме | ќе те | ќе ат | |
| Минато идно време | ќе ев | ќе еше | ќе еше | ќе евме | ќе евте | ќе еа | |
| Идно прекажано време | м.р. | ќе сум ел | ќе си ел | ќе ел | ќе сме еле | ќе сте еле | ќе еле |
| ж.р. | ќе сум ела | ќе си ела | ќе ела | ||||
| с.р. | ќе ело | ||||||
| Можен начин | м.р. | би ел | би ел | би ел | би еле | би еле | би еле |
| ж.р. | би ела | би ела | би ела | ||||
| с.р. | би ело | ||||||
| Има конструкција | имам ено | имаш ено | има ено | имаме ено | имате ено | имаат ено | |
| Сум конструкција | м.р. | сум ен | си ен | е ен | сме ени | сте ени | се ени |
| ж.р. | сум ена | си ена | е ена | ||||
| с.р. | е ено | ||||||
или само за одредено време
{{#invoke:mk-conj|SegasnoVreme}}
|-
| colspan="2" |Сегашно време|| ам || ш || || ме || те || ат
<nowiki>/nowiki
Параметри
1 (позициски параметар): Инфинитивната форма на глаголот (на пр., чита, бере, носи, рече). Задолжителен параметар.
2 (позициски параметар, аспект): Аспект на глаголот (несвршен за несвршен глагол, свршен за свршен глагол). Задолжителен за одредени времиња/начини.
3 (позициски параметар, обично раздел или последната буква од глаголот): Дополнително правило за поделба (а, о, и) за одредени видови на глаголи, особено за свршени глаголи од е групата.
Излез Модулот враќа Викимедија-форматирана викитабела ({| class="wikitable" ... |}) или дел од неа, прикажувајќи го спрегањето на глаголот за различни лица и броеви.
Објаснување на внатрешната логика
Модулот работи со извлекување на стеблото на глаголот и неговиот вид на конјугација, а потоа применува збир на предефинирани правила за формирање на јонјугациските форми.
Глобални променливи (Основни податоци за глаголот) Неколку глобални променливи се користат за зачувување на извлечените информации за глаголот за да можат да се користат во различни функции. Тие се иницијализираат од функцијата export.Basic.
stem: Главното стебло на глаголот (на пр., чит од чита).
stem_1: Стеблото без последниот знак (на пр., чит од чита ако се разгледува а, или бер од бере ако се разгледува е). Се користи за фонетски правила.
stem_2: Стеблото без последните два знака. Се користи за поспецифични фонетски правила.
tipv: Последниот самогласен знак од глаголот (на пр., а, е, и). Го одредува видот на конјугација.
tipv_1, tipv_2, tipv_3: Претходните знаци пред tipv (втор од крајот, трет од крајот, четврт од крајот). Се користат за примена на сложени фонетски правила.
tipmorf: Морфолошки тип на глаголот, одреден од tipv и razdel. Влијае на правилата за формирање на л-формата и минато определено свршено време.
debug: Променлива за дебагирање.
Основни помошни функции clean(str):
Отстранува празни места од почетокот и крајот на влезната низа.
export.Basic(frame):
Ова е основна функција која се повикува на почетокот на повеќето други функции за спрегање.
Го извлекува стеблото на глаголот и неговите самогласни и согласни завршетоци (tipv, tipv_1, tipv_2, tipv_3) и ги зачувува во глобалните променливи за користење од другите функции.
export.lFormaStem(frame):
Клучна функција за пресметување на стеблото на л-формата (глаголска придавка на -л), која служи како основа за голем број сложени времиња и начини.
Вклучува комплексна логика за фонетски промени:
jrule: Правило за вметнување на знакот ј помеѓу самогласки (на пр., знаеја -> знае-ј-а).
krule: Правило за промена на согласки (на пр., ч во к, ж во г, з во г за влезе/молзе).
Правило за исфрлање на р кај свршени глаголи од е групата (на пр., бере -> брав).
Ја поставува глобалната променлива tipmorf врз основа на видот на глаголот (tipv и razdel).
Враќа низа со пресметаните стебла на л-формата (општо, машко, женско/средно/множина).
Функции за спрегање на глаголи Секоја export. функција е одговорна за спрегање на глаголот во одредено време, начин или форма.
export.SegasnoVreme(frame) (Сегашно време):
Генерира форми за сегашно време.
export.IdnoVreme(frame) (Идно време):
Генерира форми за идно време (со ќе).
export.MinatoOpSvr(frame) (Минато определено свршено време):
Генерира форми за минато определено свршено време (аорист). Вклучува специфични правила за tipmorf.
export.MinatoOpNesvr(frame) (Минато определено несвршено време):
Генерира форми за минато определено несвршено време (имперфект).
export.MinatoNeopVr(frame) (Минато неопределено време):
Генерира форми за минато неопределено време (перфект) користејќи ја л-формата и помошниот глагол сум.
export.PredMinato(frame) (Предминато време):
Генерира форми за предминато време (плусквамперфект) користејќи ја л-формата и помошниот глагол беше.
export.IdnoPrekazano(frame) (Идно прекажано време):
Генерира форми за идно прекажано време користејќи ја л-формата и ќе сум конструкцијата.
export.MozenNacin(frame) (Можен начин):
Генерира форми за можен начин (кондиционал) користејќи ја л-формата и би конструкцијата.
export.Zapoveden(frame) (Заповеден начин):
Генерира форми за заповедниот начин. Вклучува логика за специфични завршетоци и ј вметнувања.
export.GlagolPrilog(frame) (Глаголски прилог):
Генерира глаголски прилог (-јќи). Само за несвршени глаголи.
export.GlagolImenka(frame) (Глаголска именка):
Генерира глаголска именка (-ње, -ња). Само за несвршени глаголи.
export.GlagolPridavka(frame) (Глаголска придавка):
Генерира глаголска придавка (-н, -на, -но, -ни). (Забелешка: Оваа функција има двојник export.GlagolskaPridavka и нејзиниот излезен формат на табела може да бара рачно прилагодување во одредени случаи).
export.lForma(frame) (Глаголска л-форма):
Генерира форми за глаголската л-форма (-л, -ла, -ло, -ле).
export.GlagolskaPridavka(frame) (Глаголска придавка):
Оваа функција е идентична по име и скоро идентична по логика со export.GlagolPridavka. Нејзиниот излезен формат на табела е малку поинаков, но може да не е целосно компатибилен со другите табели. Препорачливо е да се користи само една од овие две функции.
local export = {} --p stands for package
stem=""
stem_1=""
stem_2=""
tipv=""
tipv_1=""
tipv_2=""
tipv_3=""
tipmorf=""
debug=""
function export.SumKonstr (frame)
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1="" ed1f="" ed2f=""
local base=""
local rtyval=""
nasl="'''Сум конструкција'''"
export.Basic(frame)
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1="сум "..base.."н"
ed1f="сум "..base.."на"
ed2="си "..base.."н"
ed2f="си "..base.."на"
ed3m="е "..base.."н"
ed3f="е "..base.."на"
ed3n="е "..base.."но"
mn1="сме "..base.."ни"
mn2="сте "..base.."ни"
mn3="се "..base.."ни"
rtyval="|-\n | rowspan=\"3\" | "..nasl.."|| м.р. || "..ed1.." || "..ed2.."|| "..ed3m.." || rowspan=\"3\" |"..mn1.." || rowspan=\"3\" | "..mn2.." || rowspan=\"3\" | "..mn3
rty1r="\n|-\n| ж.р. || "..ed1f.." || "..ed2f.." || "..ed3f
rty2r="\n|-\n| с.р. || colspan=\"2\"| ||"..ed3n
return rtyval..rty1r..rty2r
end
function export.ImaKonstr (frame)
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3=""
local base=""
local rtyval=""
nasl="'''Има конструкција'''"
export.Basic(frame)
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1="имам "..base.."но"
ed2="имаш "..base.."но"
ed3="има "..base.."но"
mn1="имаме "..base.."но"
mn2="имате "..base.."но"
mn3="имаат "..base.."но"
rtyval="|-\n | colspan=\"2\" |"..nasl.."|| "..ed1.." || "..ed2.." || "..ed3.." || "..mn1.." || "..mn2.." || "..mn3
return rtyval
end
function export.GlagolPrilog (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1=""
local base=""
local rtyval=""
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Глаголски прилог'''"
export.Basic(frame)
if svr=="несвршен" then
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1=base.."јќи"
rtyval="|-\n |colspan=\"2\"|"..nasl.."|| style=\"text-align: center\" colspan=\"6\"|"..ed1
end
return rtyval
end
function export.GlagolImenka (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1="" mn1=""
local base=""
local rtyval=""
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Глаголска именка'''"
export.Basic(frame)
if svr=="несвршен" then
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1=base.."ње"
mn1=base.."ња"
rtyval="|-\n |colspan=\"2\"|"..nasl.."|| style=\"text-align: center\" colspan=\"3\"|"..ed1.." || style=\"text-align: center\" colspan=\"3\" | "..mn1
end
return rtyval
end
function export.MinatoOpSvr( frame )
local args = frame:getParent().args
local svr= args[2]
local jrule="" krule=""
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3=""
local rtyval=""
local osnova=""
local osn={}
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
if svr=="свршен" then
osn=export.lFormaStem (frame)
osnova=osn[1]
-- Prvo Lice ednina
ed1=osnova.."в"
-- Vtoro i Treto Lice ednina
if tipmorf=="ео" then
ed2=stem.."е"
debug="1"
elseif tipmorf=="еа" or tipmorf=="иа" then
if tipv_1=="р" then
debug="2"
ed2=stem_1.."а"
else
debug="3"
ed2=osnova
end
else
debug="4"
ed2=osnova
end
-- Prvo Lice mnozina
mn1=osnova.."вме"
-- Vtoro Lice mnozina
mn2=osnova.."вте"
-- Treto Lice mnozina
if tipmorf=="ии" then
mn3=osnova..jrule.."ја"
else
mn3=osnova..jrule.."а"
end
rtyval="|-\n | colspan=\"2\"|''' Минато определено <br> свршено време'''||"..ed1.."||"..ed2.."|| "..ed2.." ||"..mn1.."|| "..mn2.."||"..mn3
end
return rtyval
end
function export.MozenNacin (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1="" ed1f="" ed2f=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Можен начин'''"
osn=export.lFormaStem ( frame )
base=osn[2]
base1=osn[3]
ed1="би "..base.."л"
ed1f="би "..base.."ла"
ed2="би "..base.."л"
ed2f="би "..base.."ла"
ed3m="би "..base.."л"
ed3f="би "..base1.."ла"
ed3n="би "..base1.."ло"
mn1="би "..base1.."ле"
mn2="би "..base1.."ле"
mn3="би "..base1.."ле"
rtyval="|-\n | rowspan=\"3\" | "..nasl.."|| м.р. || "..ed1.." || "..ed2.."|| "..ed3m.." || rowspan=\"3\" |"..mn1.." || rowspan=\"3\" | "..mn2.." || rowspan=\"3\" | "..mn3
rty1r="\n|-\n| ж.р. || "..ed1f.." || "..ed2f.." || "..ed3f
rty2r="\n|-\n| с.р. || colspan=\"2\"| ||"..ed3n
return rtyval..rty1r..rty2r
end
function export.IdnoPrekazano (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1="" ed1f="" ed2f=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Идно прекажано време'''"
osn=export.lFormaStem ( frame )
base=osn[2]
base1=osn[3]
ed1="ќе сум "..base.."л"
ed1f="ќе сум "..base.."ла"
ed2="ќе си "..base.."л"
ed2f="ќе си "..base.."ла"
ed3m="ќе "..base.."л"
ed3f="ќе "..base1.."ла"
ed3n="ќе "..base1.."ло"
mn1="ќе сме "..base1.."ле"
mn2="ќе сте "..base1.."ле"
mn3="ќе "..base1.."ле"
rtyval="|-\n | rowspan=\"3\" | "..nasl.."|| м.р. || "..ed1.." || "..ed2.."|| "..ed3m.." || rowspan=\"3\" |"..mn1.." || rowspan=\"3\" | "..mn2.." || rowspan=\"3\" | "..mn3
rty1r="\n|-\n| ж.р. || "..ed1f.." || "..ed2f.." || "..ed3f
rty2r="\n|-\n| с.р. || colspan=\"2\"| ||"..ed3n
return rtyval..rty1r..rty2r
end
function export.PredMinato (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1="" ed1f="" ed2f=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Предминато време'''"
osn=export.lFormaStem ( frame )
base=osn[2]
base1=osn[3]
ed1="бев "..base.."л"
ed1f="бев "..base.."ла"
ed2="беше "..base.."л"
ed2f="беше "..base.."ла"
ed3m="беше "..base.."л"
ed3f="беше "..base1.."ла"
ed3n="беше "..base1.."ло"
mn1="бевме "..base1.."ле"
mn2="бевте "..base1.."ле"
mn3="беа "..base1.."ле"
rtyval="|-\n | rowspan=\"3\" | "..nasl.."|| м.р. || "..ed1.." || "..ed2.."|| "..ed3m.." || rowspan=\"3\" |"..mn1.." || rowspan=\"3\" | "..mn2.." || rowspan=\"3\" | "..mn3
rty1r="\n|-\n| ж.р. || "..ed1f.." || "..ed2f.." || "..ed3f
rty2r="\n|-\n| с.р. || colspan=\"2\"| ||"..ed3n
return rtyval..rty1r..rty2r
end
function export.MinatoNeopVr (frame)
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1="" ed1f="" ed2f=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
nasl="'''Минато неопределено <br> "..svr.."o време'''"
osn=export.lFormaStem ( frame )
base=osn[2]
base1=osn[3]
ed1="сум "..base.."л"
ed1f="сум "..base.."лa"
ed2="си "..base.."л"
ed2f="си "..base.."лa"
ed3m=base.."л"
ed3f=base1.."ла"
ed3n=base1.."ло"
mn1="сме "..base1.."ле"
mn2="сте "..base1.."ле"
mn3=base1.."ле"
rtyval="|-\n | rowspan=\"3\" | "..nasl.."|| м.р. || "..ed1.." || "..ed2.."|| "..ed3m.." || rowspan=\"3\" |"..mn1.." || rowspan=\"3\" | "..mn2.." || rowspan=\"3\" | "..mn3
rty1r="\n|-\n| ж.р. || "..ed1f.." || "..ed2f.." || "..ed3f
rty2r="\n|-\n| с.р. || colspan=\"2\"| ||"..ed3n
return rtyval..rty1r..rty2r
end
function export.GlagolPridavka (frame)
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
nasl="'''Глаголска придавка'''"
osn=export.lFormaStem ( frame )
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1=base.."н"
ed2=base.."на"
ed3=base.."но"
mn1=base.."ни"
rtyval="|-\n | rowspan=\"3\" | '''Глаголска придавка'''|| м.р. || style=\"text-align: center\" colspan=\"3\"|"..ed1.." || style=\"text-align: center\" colspan=\"3\" rowspan=\"3\" | "..mn1
rty1r="\n|-\n| ж.р. || style=\"text-align: center\" colspan=\"3\"|"..ed2
rty2r="\n|-\n| с.р. || style=\"text-align: center\" colspan=\"3\"|"..ed3
return rtyval..rty1r..rty2r
end
function export.lForma (frame)
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
osn=export.lFormaStem ( frame )
base=osn[2]
base1=osn[3]
ed1=base.."л"
ed2=base1.."ла"
ed3=base1.."ло"
mn1=base1.."ле"
rtyval="|-\n | rowspan=\"3\" | '''Глаголска л-форма'''|| м.р. || style=\"text-align: center\" colspan=\"3\"|"..ed1.." || style=\"text-align: center\" colspan=\"3\" rowspan=\"3\" | "..mn1
rty1r="\n|-\n| ж.р. || style=\"text-align: center\" colspan=\"3\"|"..ed2
rty2r="\n|-\n| с.р. || style=\"text-align: center\" colspan=\"3\"|"..ed3
return rtyval..rty1r..rty2r
end
function export.GlagolskaPridavka (frame)
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local base="" base1=""
local rtyval=""
local debug=""
local osn={}
nasl="'''Глаголска придавка'''"
osn=export.lFormaStem ( frame )
if tipv=="а" then
base=stem.."а"
else
base=stem.."е"
end
ed1=base.."н"
ed2=base.."на"
ed3=base.."но"
mn1=base.."ни"
rtyval="|-\n | rowspan=\"3\" | '''Глаголска придавка'''|| м.р. || style=\"text-align: center\" rowspan=\"3\" colspan=\"2\"|"..ed1.." || style=\"text-align: center\" colspan=\"1\"|"..ed1.." || style=\"text-align: center\" colspan=\"3\" rowspan=\"3\" | "..mn1
rty1r="\n|-\n| ж.р. || style=\"text-align: center\" colspan=\"1\"|"..ed2
rty2r="\n|-\n| с.р. || style=\"text-align: center\" colspan=\"1\"|"..ed3
return rtyval..rty1r..rty2r
end
function export.MinatoIdno( frame )
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local osnova=""
local rtyval=""
export.Basic(frame)
if tipv=="а" then
osnova=stem.."а"
else
osnova=stem.."е"
end
ed1="ќе "..osnova.."в"
ed2="ќе "..osnova.."ше"
ed3="ќе "..osnova.."ше"
mn1="ќе "..osnova.."вме"
mn2="ќе "..osnova.."вте"
mn3="ќе "..osnova.."а"
rtyval="|-\n | colspan=\"2\" | '''Минато идно време'''|| "..ed1.." || "..ed2.." || "..ed3.." || "..mn1.." || "..mn2.." || "..mn3
return rtyval
end
function export.Zapoveden( frame )
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local rtyval=""
local tip=1
if not (svr==nil) then
svr= mw.text.trim(svr)
else
svr=""
end
segarr=export.Basic(frame)
ed1=""
ed3=""
mn1=""
mn3=""
if tipv_1=="а" or tipv_1=="е" or tipv_1=="и" or tipv_1=="о" or tipv_1=="у" then
tip=2
end
if tipv=="а" then
ed2=stem.."ај"
mn2=stem.."ајте"
elseif tipv=="е" then
if tip==1 then
if tipv_3=="д" and tipv_2=="а" and tipv_1=="д" then
ed2=stem_1.."ј"
mn2=stem_1.."јте"
else
ed2=stem.."и"
mn2=stem.."ете"
end
else
ed2=stem.."j"
mn2=stem.."jте"
end
elseif tipv=="и" then
if tip==1 then
ed2=stem.."и"
mn2=stem.."ете"
else
ed2=stem.."j"
mn2=stem.."jте"
end
else
ed2="???!??"
mn2="???!??"
end
rtyval="|-\n | colspan=\"2\" |'''Заповеден начин'''|| "..ed1.." || "..ed2.." || "..ed3.." || "..mn1.." || "..mn2.." || "..mn3
return rtyval
end
function export.lFormaStem ( frame )
local args = frame:getParent().args
local str= args[1]
local svr= args[2]
local razdel= args[3]
local jrule="" krule=""
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3=""
local rtyval=""
local osnova="" losnovam="" losnovaf=""
local rosnova={}
if not (svr==nil) then
svr= mw.text.trim(svr)
end
if not (razdel==nil) then
razdel= mw.text.trim(razdel)
else
razdel=""
end
if str==nil then
str=""
else
str=mw.text.trim(str)
end
export.Basic(frame)
if tipv=="а" then
tipmorf="a"
elseif tipv=="и" then
tipmorf="и"..razdel
else
tipmorf="е"..razdel
end
if svr=="свршен" then
-- Правило за пишување на буквата ј помеѓу две согласки
-- Ако пред а, се наоѓа и,о или у помеѓу нив се пишува ј: пи-ј-ам бро-ј-ам зу-ј-ат
-- Помеѓу две а во минато определено свршено време ти истраја
-- Во група од три или повеќе самогласки во непосреден допир во 3 л. мн. на минатото определено време: знаеја, миеја
-- Во формите за еднина и множина на заповедниот начин кај глаголите чија основа завршува на -и: биј – бијте, вриј – вријте, криј – кријте, спиј – спијте.
if tipv_1=="а" or tipv_1=="е" or tipv_1=="и" or tipv_1=="о" or tipv_1=="у" then
jrule="j"
end
-- Правило за замена на ч со к и ж со г кај свршените глаголи
-- Ако после самогласка на крајот од зборот имаме ч кај глаголите од групата е раздел а или о тогаш ч преминува во к рече->>реков
-- Ако после самогласка на крајот од зборот имаме ч кај глаголите од групата и раздел а ч преминува во к грачи->>гракав
-- Ако после самогласка на крајот од зборот имаме ж кај глаголите од групата е раздел а или о тогаш ж преминува во г струже->>стругав стриже->>стригов
-- Кај молзе и влезе з преминува во г влезе->>влегов молзе->>молгов
if tipv_2=="а" or tipv_2=="е" or tipv_2=="и" or tipv_2=="о" or tipv_2=="у" then
if tipv_1=="ч" then
krule="к"
elseif tipv_1=="ж" or str=="влезе" or str=="молзе" then
krule="г"
else
krule=tipv_1
end
else
krule=tipv_1
end
-- Правило за исфрлање на буквата р кај е групата на свршени глаголи раздел а бере->> брав
if tipv_1=="р" and tipv_2=="е" and tipmorf=="еа" then
stem_1=stem_2..tipv_1
tipv=""
krule=""
end
if tipmorf=="a" or tipmorf=="еа" or tipmorf=="иа" then
osnova=stem_1..krule..jrule.."а"
losnovam=osnova
losnovaf=osnova
elseif tipmorf=="ео" then
osnova=stem_1..krule.."о"
losnovam=osnova
losnovaf=osnova
if tipv_1=="д" then
if tipv_2=="ј" then
losnovam=stem_2.."шо"
losnovaf=stem_2.."ш"
elseif tipv_2=="и" then
losnovam=stem_1.."шо"
losnovaf=stem_1.."ш"
else
losnovam=stem_1
losnovaf=stem_1
end
end
elseif tipmorf=="ии" then
osnova=stem.."и"
losnovam=osnova
losnovaf=osnova
elseif tipmorf=="е" then
osnova=stem_1.."и"
losnovam=osnova
losnovaf=osnova
else
osnova=stem.."е"
losnovam=osnova
losnovaf=osnova
end
elseif svr=="несвршен" then
if tipv=="а" then
osnova=stem.."а"
else
osnova=stem.."е"
end
losnovam=osnova
losnovaf=osnova
end
rosnova={osnova,losnovam,losnovaf}
return rosnova
end
function export.MinatoOpNesvr( frame )
local args = frame:getParent().args
local svr= args[2]
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3=""
local rtyval=""
local jrule=""
local osn={}
local osnova=""
if not (svr==nil) then
svr= mw.text.trim(svr)
end
--export.Basic(frame)
osn=export.lFormaStem(frame)
osnova=osn[1]
if tipv_1=="а" or tipv_1=="е" or tipv_1=="и" or tipv_1=="о" or tipv_1=="у" then
jrule="j"
end
if svr=="несвршен" then
-- Prvo Lice ednina
ed1=osnova.."в"
-- Vtoro Lice ednina
ed2=osnova.."ше"
-- Treto Lice ednina
ed3=osnova.."ше"
-- Prvo Lice mnozina
mn1=osnova.."вме"
-- Vtoro Lice mnozina
mn2=osnova.."вте"
-- Treto Lice mnozina
if tipv=="а" then
mn3=osnova.."а"
else
mn3=osnova..jrule.."а"
end
rtyval="|-\n | colspan=\"2\" | ''' Минато определено <br> несвршено време'''||"..ed1.."||"..ed2.."|| "..ed3.." ||"..mn1.."|| "..mn2.."||"..mn3
end
return rtyval
end
function export.IdnoVreme( frame )
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local rtyval=""
segarr=export.SegasnoStem ( frame )
ed1="ќе "..segarr[1]
ed2="ќе "..segarr[2]
ed3="ќе "..segarr[3]
mn1="ќе "..segarr[4]
mn2="ќе "..segarr[5]
mn3="ќе "..segarr[6]
rtyval="|-\n | colspan=\"2\" | '''Идно време'''|| "..ed1.." || "..ed2.." || "..ed3.." || "..mn1.." || "..mn2.." || "..mn3
return rtyval
end
function export.SegasnoVreme( frame )
local ed1="" ed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local segarr={}
local rtyval=""
segarr=export.SegasnoStem ( frame )
ed1=segarr[1]
ed2=segarr[2]
ed3=segarr[3]
mn1=segarr[4]
mn2=segarr[5]
mn3=segarr[6]
rtyval="|-\n | colspan=\"2\" |'''Сегашно време'''|| "..ed1.." || "..ed2.." || "..ed3.." || "..mn1.." || "..mn2.." || "..mn3
return rtyval
end
function export.SegasnoStem ( frame )
local args = frame:getParent().args
local str = args[1]
local ed1="" sed2="" ed3="" mn1="" mn2="" mn3="" ed1=""
local jrule=""
local stemarr={}
export.Basic(frame)
if str==nil then
str=""
else
str=mw.text.trim(str)
end
debug=str
if tipv_1=="и" or tipv_1=="о" or tipv_1=="у" then
jrule="j"
end
-- Prvo Lice ednina
if str=="знае" then
ed1="знам"
else
ed1=stem..jrule.."ам"
end
-- Vtoro Lice ednina
ed2=stem..tipv.."ш"
-- Treto Lice ednina
ed3=stem..tipv
-- Prvo Lice mnozina
mn1=stem..tipv.."ме"
-- Vtoro Lice mnozina
mn2=stem..tipv.."те"
-- Treto Lice mnozina
if tipv=="а" then
mn3=stem.."аат"
else
mn3=stem..jrule.."ат"
end
stemarr={ed1,ed2,ed3,mn1,mn2,mn3}
return stemarr
end
function export.Basic( frame )
local args = frame:getParent().args
local str = args[1]
local svr = args[2]
local dvesoglaski="no"
local t = {}
local i = 0
local j=0
if not (svr==nil) then
svr= mw.text.trim(svr)
end
if not (str==nil) then
str= mw.text.trim(str)
else
str=""
end
do
while true do
i = i + 1
t[i]= mw.ustring.codepoint( str, i, i+1 )
if t[i]==nil then
break
end
end
end
do
while j<i-2 do
j = j + 1
stem=stem..mw.ustring.char(t[j])
if j<i-2 then
stem_1=stem_1..mw.ustring.char(t[j])
end
if j<i-3 then
stem_2=stem_2..mw.ustring.char(t[j])
end
end
end
if i>1 then
tipv=mw.ustring.char(t[i-1])
if i>2 then
tipv_1=mw.ustring.char(t[i-2])
if i>3 then
tipv_2=mw.ustring.char(t[i-3])
if i>4 then
tipv_3=mw.ustring.char(t[i-4])
end
end
end
end
end
return export