Module:tr-verb form of
Appearance
- The following documentation is located at Module:tr-verb form of/documentation. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
This module powers {{tr-verb form of}}
.
local export = {}
local m_harmony = require("Module:tr-harmony")
local m_form_of = require("Module:form of")
local lang = require("Module:languages").getByCode("tr")
function export.show(frame)
local args = require "Module:parameters".process(frame:getParent().args, {
[1] = { required = true },
["title"] = { default = nil },
})
local lemma = args[1]
local title = args["title"] or mw.title.getCurrentTitle().text
if not mw.ustring.match(lemma, "m[ae]k$") then
error("lemma form must end in -mak or -mek")
end
local stem = lemma:sub(1, -4)
local soft_stem = m_harmony.soften(stem)
local has_soft_stem = stem ~= soft_stem
local stem_last_word = mw.ustring.match(stem, "(%w+)$")
local one_syllable = not mw.ustring.match(stem_last_word, "[" .. m_harmony.vowels .. "][^" .. m_harmony.vowels .. "]+[" .. m_harmony.vowels .. "]")
local etmek_style = mw.ustring.match(stem, "et$")
local could_have_2_way_aorist = one_syllable or etmek_style
forms = {}
local lemma_obj = {
lang = lang,
term = lemma,
}
function add_form_to_base(base, suffixes, tags)
suffixed = m_harmony.attach_suffixes(base, suffixes, nil, could_have_2_way_aorist, true)
for _, form in ipairs(suffixed) do
forms[form] = tags
end
end
function add_form(suffixes, tags)
add_form_to_base(stem, suffixes, tags)
if has_soft_stem then -- here, more checks could potentially be added based on the suffixes
add_form_to_base(soft_stem, suffixes, tags)
end
end
-- imperative
add_form("", { "2", "s", "imp" })
add_form("sIn", { "3", "s", "imp" })
add_form("YIn", { "2", "p", "imp" })
add_form("YInIz", { "polite", "2", "p", "imp" })
add_form("sInlAr", { "3", "p", "imp" })
add_form("mA", { "2", "s", "neg", "imp" })
add_form("mAsIn", { "3", "s", "neg", "imp" })
add_form("mAyIn", { "2", "p", "neg", "imp" })
add_form("mAyInIz", { "polite", "2", "p", "neg", "imp" })
add_form("mAsInlAr", { "3", "p", "neg", "imp" })
-- indicative
--- aorist
add_form("RIm", { "1", "s", "ind", "aor" })
add_form("RsIn", { "2", "s", "ind", "aor" })
add_form("R", { "3", "s", "ind", "aor" })
add_form("RIz", { "1", "p", "ind", "aor" })
add_form("RsInIz", { "2", "p", "ind", "aor" })
add_form("RlAr", { "3", "p", "ind", "aor" })
add_form("mAm", { "1", "s", "ind", "neg", "aor" })
add_form("mAzsIn", { "2", "s", "ind", "neg", "aor" })
add_form("mAz", { "3", "s", "ind", "neg", "aor" })
add_form("mAyIz", { "1", "p", "ind", "neg", "aor" })
add_form("mAzsInIz", { "2", "p", "ind", "neg", "aor" })
add_form("mAzlAr", { "3", "p", "ind", "neg", "aor" })
--- simple past
add_form("DIm", { "1", "s", "ind", "simple past" })
add_form("DIn", { "2", "s", "ind", "simple past" })
add_form("DI", { "3", "s", "ind", "simple past" })
add_form("DIk", { "1", "p", "ind", "simple past" })
add_form("DInIz", { "2", "p", "ind", "simple past" })
add_form("DIlAr", { "3", "p", "ind", "simple past" })
add_form("mAdIm", { "1", "s", "ind", "neg", "simple past" })
add_form("mAdIn", { "2", "s", "ind", "neg", "simple past" })
add_form("mAdI", { "3", "s", "ind", "neg", "simple past" })
add_form("mAdIk", { "1", "p", "ind", "neg", "simple past" })
add_form("mAdInIz", { "2", "p", "ind", "neg", "simple past" })
add_form("mAdIlAr", { "3", "p", "ind", "neg", "simple past" })
--- future
add_form("YAcAğIm", { "1", "s", "ind", "fut" })
add_form("YAcAksIn", { "2", "s", "ind", "fut" })
add_form("YAcAk", { "3", "s", "ind", "fut" })
add_form("YAcAğIz", { "1", "p", "ind", "fut" })
add_form("YAcAksInIz", { "2", "p", "ind", "fut" })
add_form("YAcAklAr", { "3", "p", "ind", "fut" })
add_form("mAyAcAğIm", { "1", "s", "ind", "neg", "fut" })
add_form("mAyAcAksIn", { "2", "s", "ind", "neg", "fut" })
add_form("mAyAcAk", { "3", "s", "ind", "neg", "fut" })
add_form("mAyAcAğIz", { "1", "p", "ind", "neg", "fut" })
add_form("mAyAcAksInIz", { "2", "p", "ind", "neg", "fut" })
add_form("mAyAcAklAr", { "3", "p", "ind", "neg", "fut" })
--- participles
add_form("YAn", { "present", "participle"})
--- gerunds
add_form("YArAk", { "gerund" })
add_form("Ip", { "gerund" })
tags = forms[title]
if tags then
return m_form_of.tagged_inflections {
lang = lang, tags = tags, lemmas = {lemma_obj}, lemma_face = "term", POS = "verb"
}
else
error("unknown verb form")
end
end
return export