Module to create Mohawk conjugation tables. Right now it's rudimentary, and needs to be passed the stem with the accent already there (so it can't deal with short nouns) It also currently only makes the Kahnawake forms
local export = {}
local div_top = [=[
<div class="NavFrame" style="width: 30em;">
<div class="NavHead" style="background: #CCCCFF; text-align: left;">Possessive forms of <i lang="moh">PAGENAME</i></div>
<div class="NavContent">
]=]
local div_bottom = [=[</div>
</div>]=]
local poss_table = [=[
{| class="wikitable" style="width:30em"
|+ {TYPE}
|-
! Person !! Sing. !! Dual !! Plur.
|-
| 1st || {1|s} || {1|d} || {1|p}
|-
| 2nd || {2|s} || {2|d} || {2|p}
|-
| 3rd
|| {3|m|s} <br> {3|f//impers|s} <br> {3|f//n|s}
|colspan=2 style="text-align: center;"| {3|m|d//p} <br> {3|f|d//p}
|}]=]
local lang = require("Module:languages").getByCode("moh")
local m_string_utilities = require("Module:string utilities")
local m_links = require("Module:links")
local rfind = mw.ustring.find
local rsubn = mw.ustring.gsub
local ulower = mw.ustring.lower
local usub = mw.ustring.sub
local function rsub(term, foo, bar)
local retval = rsubn(term, foo, bar)
return retval
end
local function penultimate(form)
return form
end
local form_names = {"1|s", "2|s", "3|m|s", "3|f//impers|s", "3|f//n|s", "1|d", "2|d", "1|p", "2|p", "3|m|d//p", "3|f|d//p"}
local poss = {
= {"ak", "sa", "rao", "ako", "ao", "onkeni", "seni", "onkwa", "sewa", "raoti", "aoti"},
= {"ake", "sa", "rao", "ako", "ao", "onkeni", "seni", "onkwa", "sewa", "raoti", "aoti"},
= {"akwa", "sa", "rao", "ako", "ao", "ontia", "tsa", "onkwa", "sewa", "raona", "aona"},
= {"akw", "s", "raw", "akaw", "aw", "onken", "sen", "onkw", "sew", "raon", "aon"},
= {"ak", "s", "ra", "aka", "a", "onken", "sen", "onti", "ts", "raon", "aon"},
= {"aki", "sen", "rao", "ako", "ao", "onkeni", "seni", "onkwen", "sewen", "raoti", "aoti"},
= {"at", "sen", "rao", "ako", "ao", "onkeni", "seni", "onkwen", "sewen", "raoti", "aoti"},
}
local neg_poss = {
= {"tewak", "tesa", "teho", "teio", "teiako", "teionkeni", "teseni", "teionkwa", "tesewa", "tehoti", "teioti"},
= {"tewake", "tesa", "teho", "teio", "teiako", "teionkeni", "teseni", "teionkwa", "tesewa", "tehoti", "teioti"},
= {"tewaka", "tesa", "teho", "teio", "teiako", "teiontia", "tetsa", "teionkwa", "tesewa", "tehona", "teiona"},
= {"tewak", "tes", "tehaw", "teiaw", "teiakaw", "teionken", "tesen", "teionkw", "tesew", "tehon", "teion"},
= {"tewak", "tes", "teha", "teia", "teiaka", "teionken", "tesen", "teionti", "tets", "tehon", "teion"},
= {"tewat", "tesa", "teho", "teio", "teiako", "teionkeni", "teseni", "teionkwa", "tesewa", "tehoti", "teioti"}
}
local function build_table(PAGENAME, forms, neg_forms)
full_table = rsub(div_top, "PAGENAME", PAGENAME) .. "\n" .. m_string_utilities.format(poss_table, forms) .. "\n" .. m_string_utilities.format(poss_table, neg_forms) .. div_bottom
return full_table
end
function export.show(frame)
PAGENAME = mw.title.getCurrentTitle().text
text = frame.args
ending = frame.args
-- control whether links get generated
links = frame.args
if links ~= nil and links == "true" then
links = true
else
links = false
end
-- figure out the stem, and cut off initial vowel
stem = ulower(text)
init = usub(stem,1,1)
second = usub(stem,2,2)
class = nil
if init == "a" then
class = "A"
stem = usub(stem,2,-1)
elseif init == "e" then class = "E"
elseif init == "o" then class = "O"
elseif init == "i" then
if second == "a" or second == "e" or second == "o" then class = "Y"
else
class = "I"
stem = ulower(usub(stem,2,-1))
end
elseif init == "n" or init == "r" or init == "w" or init == "’" then class = "R"
else class = "C"
end
prefixes = poss
neg_prefixes = neg_poss
local forms = {}
local neg_forms = {}
forms = "Possessive"
forms = PAGENAME
neg_forms = "Negative possessive"
neg_forms = PAGENAME
for i = 1,11 do
form = prefixes .. stem .. ending
neg_form = neg_prefixes .. stem .. ending
if links then
link = m_links.full_link({term = form, lang = lang, accel = {form = form_names .. "|poss"}}, "term", false)
forms] = link
neg_link = m_links.full_link({term = form, lang = lang, accel = {form = form_names .. "|neg|poss"}}, "term", false)
neg_forms] = neg_link
else
forms] = form
neg_forms] = neg_form
end
end
return build_table(PAGENAME ,forms, neg_forms)
end
return export