local m_g = require('Module:gender and number')
local export = {}
function export.default(frame)
do
local args = frame:getParent().args
local tablo = frame:expandTemplate{
title = 'inflection-table-top',
args = {
title = "Conjugation of " .. mw.title.getCurrentTitle().text,
palette = 'red',
tall = 'yes',
}
} .. [[
{| class="wikitable"
! colspan="3" | infinitive
| {{{infinitive}}}
| class="blank-end-row" colspan="9" |
|-
| class="separator" colspan="4" |
| class="separator" colspan="1" rowspan="1" |
| class="separator" colspan="4" |
|-
! colspan="4" class="outer" | perfect
| class="separator" rowspan="7" |
! colspan="4" class="outer" | gerundive
|-
! colspan="2" |
! singular
! plural
! colspan="2" |
! singular
! plural
|-
! colspan="2" | 1st
| {{{perfect_1s}}}
| {{{perfect_1p}}}
! colspan="2" | 1st
| {{{gerundive_1s}}}
| {{{gerundive_1p}}}
|-
! rowspan="2" style="text-align: center;" | 2nd
! class="secondary" | {{{m}}}
| {{{perfect_2sm}}}
| {{{perfect_2pm}}}
! rowspan="2" | 2nd
! class="secondary" | {{{m}}}
| {{{gerundive_2sm}}}
| {{{gerundive_2pm}}}
|-
! class="secondary" | {{{f}}}
| {{{perfect_2sf}}}
| {{{perfect_2pf}}}
! class="secondary" | {{{f}}}
| {{{gerundive_2sf}}}
| {{{gerundive_2pf}}}
|-
! rowspan="2" | 3rd
! class="secondary" | {{{m}}}
| {{{perfect_3sm}}}
| {{{perfect_3pm}}}
! rowspan="2" | 3rd
! class="secondary" | {{{m}}}
| {{{gerundive_3sm}}}
| {{{gerundive_3pm}}}
|-
! class="secondary" | {{{f}}}
| {{{perfect_3sf}}}
| {{{perfect_3pf}}}
! class="secondary" | {{{f}}}
| {{{gerundive_3sf}}}
| {{{gerundive_3pf}}}
|-
| class="separator" colspan="4" |
| class="separator" colspan="1" rowspan="1" |
| class="separator" colspan="4" |
|-
! colspan="4" class="outer" | imperfect
| class="separator" rowspan="7" |
! colspan="4" class="outer" | jussive
|-
! colspan="2" |
! singular
! plural
! colspan="2" |
! singular
! plural
|-
! colspan="2" style="text-align: center;" | 1st
| {{{imperfect_1s}}}
| {{{imperfect_1p}}}
! colspan="2" style="text-align: center;" | 1st
| {{{jussive_1s}}}
| {{{jussive_1p}}}
|-
! rowspan="2" | 2nd
! class="secondary" | {{{m}}}
| {{{imperfect_2sm}}}
| {{{imperfect_2pm}}}
! rowspan="2" | 2nd
! class="secondary" | {{{m}}}
| {{{jussive_2sm}}}
| {{{jussive_2pm}}}
|-
! class="secondary" | {{{f}}}
| {{{imperfect_2sf}}}
| {{{imperfect_2pf}}}
! class="secondary" | {{{f}}}
| {{{jussive_2sf}}}
| {{{jussive_2pf}}}
|-
! rowspan="2" | 3rd
! class="secondary" | {{{m}}}
| {{{imperfect_3sm}}}
| {{{imperfect_3pm}}}
! rowspan="2" | 3rd
! class="secondary" | {{{m}}}
| {{{jussive_3sm}}}
| {{{jussive_3pm}}}
|-
! class="secondary" | {{{f}}}
| {{{imperfect_3sf}}}
| {{{imperfect_3pf}}}
! class="secondary" | {{{f}}}
| {{{jussive_3sf}}}
| {{{jussive_3pf}}}
|-
| class="separator" colspan="4" |
| class="separator" colspan="1" rowspan="1" |
| class="separator" colspan="4" |
|-
! colspan="4" class="outer" | affirmative commands
| class="separator" rowspan="4" |
! colspan="4" class="outer" | negative commands
|-
! colspan="2" |
! style="text-align: center;" | singular
! style="text-align: center;" | plural
! colspan="2" |
! style="text-align: center;" | singular
! style="text-align: center;" | plural
|-
! rowspan="2" | 2nd
! class="secondary" | {{{m}}}
| {{{imperative_2sm}}}
| {{{imperative_2pm}}}
! rowspan="2" | 2nd
! class="secondary" | {{{m}}}
| {{{imperative_2smN}}}
| {{{imperative_2pmN}}}
|-
! class="secondary" | {{{f}}}
| {{{imperative_2sf}}}
| {{{imperative_2pf}}}
! class="secondary" | {{{f}}}
| {{{imperative_2sfN}}}
| {{{imperative_2pfN}}}
]] .. frame:expandTemplate{ title = 'inflection-table-bottom' }
if args ~= nil
then
local t = {}
-- perfect conjugations ገበረ
t = string.format("mə %s %sa %s", args, args, args)
t = string.format("%sä %sä %s ku",args, args, args)
t = string.format("%sä %sä %s na",args, args, args)
t = string.format("%sä %sä %s ka",args, args, args)
t = string.format("%sä %sä %s kum",args, args, args)
t = string.format("%sä %sä %s ki",args, args, args)
t = string.format("%sä %sä %s kən",args, args, args)
t = string.format("%sä %sä %sä",args, args, args)
t = string.format("%sä %sä %su",args, args, args)
t = string.format("%sä %sä %sä t",args, args, args)
t = string.format("%sä %sä %sa",args, args, args)
--gerundive conjugations ገቢሩ
t = string.format("%sä %si %sä",args, args, args)
t = string.format("%sä %si %s na",args, args, args)
t = string.format("%sä %si %s ka",args, args, args)
t = string.format("%sä %si %s kum",args, args, args)
t = string.format("%sä %si %s ki",args, args, args)
t = string.format("%sä %si %s kən",args, args, args)
t = string.format("%sä %si %su",args, args, args)
t = string.format("%sä %si %som",args, args, args)
t = string.format("%sä %si %sa",args, args, args)
t = string.format("%sä %si %sän",args, args, args)
--imperfect conjugations ይገብር
t = string.format("ʾə %sä %s %sə %s",args, args, args, args)
t = string.format("nə %sä %s %sə %s",args, args, args, args)
t = string.format("tə %sä %s %sə %s",args, args, args, args)
t = string.format("tə %sä %s %su",args, args, args)
t = string.format("tə %sä %s %si",args, args, args)
t = string.format("tə %sä %s %sa",args, args, args)
t = string.format("yə %sä %s %sə %s",args, args, args, args)
t = string.format("yə %sä %s %su",args, args, args)
t = string.format("tə %sä %s %sə %s",args, args, args, args)
t = string.format("yə %sä %s %sa",args, args, args)
--jussive conjugations ይግበር
t = string.format("ʾə %s %sä %s", args, args, args)
t = string.format("nə %s %sä %s", args, args, args)
t = string.format("tə %s %sä %s", args, args, args)
t = string.format("tə %s %sä %su", args, args, args)
t = string.format("tə %s %sä %si", args, args, args)
t = string.format("tə %s %sä %sa", args, args, args)
t = string.format("yə %s %sä %s", args, args, args)
t = string.format("yə %s %sä %su", args, args, args)
t = string.format("tə %s %sä %s", args, args, args)
t = string.format("yə %s %sä %sa", args, args, args)
--affirmative command conjugations ግበር
t = string.format("%sə %sä %s", args, args, args)
t = string.format("%sə %sä %su", args, args, args)
t = string.format("%sə %sä %si", args, args, args)
t = string.format("%sə %sä %sa", args, args, args)
--negative command conjugations ኣይትግበር
t = string.format("ʾa y tə %s %sä %s", args, args, args)
t = string.format("ʾa y tə %s %sä %su", args, args, args)
t = string.format("ʾa y tə %s %sä %si", args, args, args)
t = string.format("ʾa y tə %s %sä %sa", args, args, args)
--t = mw.ustring.gsub(t, "(%bbb)", function(a) return mw.ustring.sub(a,1,1) end)
local tm = {}
for var=1,49,1 do
tm = mw.ustring.gsub(t, "(%bhh)", function(a) return mw.ustring.sub(a,1,1) end) --not actually used, doesn't double
tm = mw.ustring.gsub(tm, "(l%sl)", function(a) return mw.ustring.sub(a,1,1) end)
-- tm = mw.ustring.gsub(tm, "(%bḥḥ)", function(a) return mw.ustring.sub(a,1,1) end) --not used, the other letters that don't double won't appear
tm = mw.ustring.gsub(tm, "(s%ss)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(š%sš)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(ḳ%sḳ)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(b%sb)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(t%st)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(n%sn)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(k%sk)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(x%sx)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(w%sw)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(z%sz)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(y%sy)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(d%sd)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(ǧ%sǧ)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(g%sg)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(ṭ%sṭ)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(č%sč)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(ṣ%sṣ)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(f%sf)", function(a) return mw.ustring.sub(a,1,1) end)
tm = mw.ustring.gsub(tm, "(x̣%sx̣)", function(a) return mw.ustring.sub(a,1,2) end)
end
-- consonant characters that hypothetically double in verbs: hlḥsšx̣btnʾkxwʿzydǧgṭčṣf
local rtr = {
="ሀ", ="ሁ", ="ሂ", ="ሃ", ="ሄ", ="ህ", ="ሆ", ="ህ",
="ለ", ="ሉ", ="ሊ", ="ላ", ="ሌ", ="ል", ="ሎ",
="ሏ", ="ል",
="ሐ", ="ሑ", ="ሒ", ="ሓ", ="ሔ", ="ሕ", ="ሖ",
="ሗ", ="ሕ",
="መ", ="ሙ", ="ሚ", ="ማ", ="ሜ", ="ም", ="ሞ",
="ሟ", ="ፙ",
="ረ", ="ሩ", ="ሪ", ="ራ", ="ሬ", ="ር", ="ሮ",
="ሯ", ="ፘ",
="ሰ", ="ሱ", ="ሲ", ="ሳ", ="ሴ", ="ስ", ="ሶ",
="ሷ",
="ሸ", ="ሹ", ="ሺ", ="ሻ", ="ሼ", ="ሽ", ="ሾ",
="ሿ",
="ቀ", ="ቁ", ="ቂ", ="ቃ", ="ቄ", ="ቅ", ="ቆ",
="ቈ", ="ቊ", ="ቋ", ="ቌ", ="ቍ",
="ቐ", ="ቑ", ="ቒ", ="ቓ", ="ቔ", ="ቕ", ="ቖ",
="ቘ", ="ቚ", ="ቛ", ="ቜ", ="ቝ",
="በ", ="ቡ", ="ቢ", ="ባ", ="ቤ", ="ብ", ="ቦ",
="ቧ",
="ተ", ="ቱ", ="ቲ", ="ታ", ="ቴ", ="ት", ="ቶ",
="ቷ",
="ነ", ="ኑ", ="ኒ", ="ና", ="ኔ", ="ን", ="ኖ",
="ኗ",
="አ", ="ኡ", ="ኢ", ="ኣ", ="ኤ", ="እ", ="ኦ",
="ከ", ="ኩ", ="ኪ", ="ካ", ="ኬ", ="ክ", ="ኮ",
="ኰ", ="ኲ", ="ኳ", ="ኴ", ="ኵ",
="ኸ", ="ኹ", ="ኺ", ="ኻ", ="ኼ", ="ኽ", ="ኾ", ="ዅ",
="ወ", ="ዉ", ="ዊ", ="ዋ", ="ዌ", ="ው", ="ዎ",
="ዐ", ="ዑ", ="ዒ", ="ዓ", ="ዔ", ="ዕ", ="ዖ",
="ዘ", ="ዙ", ="ዚ", ="ዛ", ="ዜ", ="ዝ", ="ዞ",
="ዟ",
="የ", ="ዩ", ="ዪ", ="ያ", ="ዬ", ="ይ", ="ዮ",
="ደ", ="ዱ", ="ዲ", ="ዳ", ="ዴ", ="ድ", ="ዶ",
="ዷ",
="ጀ", ="ጁ", ="ጂ", ="ጃ", ="ጄ", ="ጅ", ="ጆ",
="ጇ",
="ገ", ="ጉ", ="ጊ", ="ጋ", ="ጌ", ="ግ", ="ጎ",
="ጐ", ="ጒ", ="ጓ", ="ጔ", ="ጕ",
="ጠ", ="ጡ", ="ጢ", ="ጣ", ="ጤ", ="ጥ", ="ጦ",
="ጧ",
="ጨ", ="ጩ", ="ጪ", ="ጫ", ="ጬ", ="ጭ", ="ጮ",
="ጯ",
="ጸ", ="ጹ", ="ጺ", ="ጻ", ="ጼ", ="ጽ", ="ጾ",
="ጿ",
="ፈ", ="ፉ", ="ፊ", ="ፋ", ="ፌ", ="ፍ", ="ፎ",
="ፏ", ="ፚ", ="ም" , ="ር", ="ስ", ="ሽ",="ቅ", ="ቕ",
="ብ", ="ት", ="ን", ="እ", ="ክ", ="ኽ", ="", ="ዕ", ="ዝ",
="ይ", ="ድ", ="ጅ", ="ግ", ="ጥ", ="ጭ", ="ጽ", ="ፍ",
}
local tf = {}
for var=1,49,1 do
tf = mw.ustring.gsub(tm, "%a%a", rtr)
tf = mw.ustring.gsub(tf,"." , rtr)
tf = mw.ustring.gsub(tf, "%s+", "")
t = mw.ustring.gsub(t, "%s+","")
end
local g_m = m_g.format_list({'m'})
local g_f = m_g.format_list({'f'})
local conjs = {
= g_m,
= g_f,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf,
= tf
}
tablof = mw.ustring.gsub(tablo, "{{{.-}}}", conjs)
return tablof
else
local input = {
= g_m,
= g_f,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
= args,
}
tabloff = mw.ustring.gsub(tablo, "{{{.-}}}", input)
return tabloff
end
end
end
return export