မဝ်ဂျူ:pl-headword
Documentation for this module may be created at မဝ်ဂျူ:pl-headword/doc
local export = {}
local lang = require("Module:languages").getByCode("pl")
local function collect_numbered(args, prefix, target)
local was_empty = false
if args[prefix] then
table.insert(target, args[prefix])
local i = 2
while args[prefix .. i] do
table.insert(target, args[prefix .. i])
i = i + 1
end
end
return target
end
local function add_if_nonempty(infls, item)
if #item > 0 then
table.insert(infls, item)
end
end
-- verbs
-- Aspect normalization table.
-- Note that determinate, indeterminate and frequentative aspects mainly make
-- sense for verbs of motion. Most verbs will have either perfective or
-- imperfective aspect.
local norm_aspect = {
-- perfective aspect: zrobić, dojechać, pójść
["p"] = "pf",
["pf"] = "pf",
["perf"] = "pf",
["perfective"] = "pf",
-- imperfective aspect: robić, karać
["i"] = "impf",
["impf"] = "impf",
["imperf"] = "impf",
["imperfective"] = "impf",
-- determinate aspect: jechać, iść
-- implies imperfective
["impf-det"] = "impf-det",
["det"] = "impf-det",
-- indeterminate aspect: jeździć, chodzić
-- implies imperfective
["impf-indet"] = "impf-indet",
["indet"] = "impf-indet",
-- frequentative aspect: chadzać
-- implies imperfective and indeterminate
["freq"] = "impf-freq",
["if"] = "impf-freq",
["impf-freq"] = "impf-freq",
}
function export.show_verb(frame)
local args = frame:getParent().args
local data = {lang = lang, pos_category = "ကြိယာ", categories = {}, sort_key = args.sort, heads = {args.head}, genders = {}, inflections = {}}
local tracking_categories = {}
local aspect = norm_aspect[args.aspect or args.asp or args.a or false] or "?"
if aspect == "pf" then
table.insert(data.genders, "pf")
table.insert(data.categories, "ကြိယာပဝ်လာန်ဗီုပြင်မက္ဍိုပ်ပေင်ဂမၠိုင်")
elseif (aspect == "impf") or (aspect == "impf-det") or (aspect == "impf-indet") or (aspect == "impf-freq") then
table.insert(data.genders, "impf")
table.insert(data.categories, "ကြိယာပဝ်လာန်ဗီုပြင်ဟွံက္ဍိုပ်ပေင်ဂမၠိုင်")
else
table.insert(data.genders, "?")
table.insert(data.categories, "ကြိယာပဝ်လာန်လက်သန်ဗီုပြင်ဗၠေတ်ဗၠေင်")
end
if aspect == "impf-det" then
table.insert(data.inflections, {label = "ကၞာတ်သမ္တီ"})
table.insert(data.categories, "ကြိယာပဝ်လာန်ကၞာတ်သမ္တီလဝ်ဂမၠိုင်")
elseif aspect == "impf-indet" then
table.insert(data.inflections, {label = "မဟွံတွဵုဒနက်"})
table.insert(data.categories, "ကြိယာပဝ်လာန်နကဵုမဟွံတွဵုဒနက်ဂမၠိုင်")
elseif aspect == "impf-freq" then
table.insert(data.inflections, {label = "မဟွံတွဵုဒနက်"})
table.insert(data.inflections, {label = "ထပ်တုဲထပ်ပၠန်"})
table.insert(data.categories, "ကြိယာပဝ်လာန်နကဵုမဟွံတွဵုဒနက်ဂမၠိုင်")
table.insert(data.categories, "ကြိယာပဝ်လာန်မရပ်စပ်သုင်စောဲနကဵုထပ်တုဲထပ်ပၠန်ဂမၠိုင်")
end
local perf = { label = "perfective" }
local imperf = { label = "imperfective" }
local det = { label = "imperfective determinate" }
local indet = { label = "indeterminate" }
local freq = { label = "frequentative" }
-- legacy parameter
if args[1] then
if (aspect == "impf") then
table.insert(perf, args[1])
elseif (aspect == "pf") then
table.insert(imperf, args[1])
end
end
collect_numbered(args, "perf", perf)
collect_numbered(args, "pf", perf)
collect_numbered(args, "imperf", imperf)
collect_numbered(args, "impf", imperf)
collect_numbered(args, "det", det)
collect_numbered(args, "indet", indet)
collect_numbered(args, "freq", freq)
-- "pref" would never come before "det" (pf; det-inedt, impf; det-indet, indet; det-pf, etc.)
add_if_nonempty(data.inflections, det)
add_if_nonempty(data.inflections, perf)
add_if_nonempty(data.inflections, imperf)
add_if_nonempty(data.inflections, indet)
add_if_nonempty(data.inflections, freq)
return require("Module:headword").full_headword(data) ..
require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end
function export.show_participle(frame)
local args = frame:getParent().args
local data = {lang = lang, pos_category = "လုပ်ကၠောန်စွံလဝ်", categories = {}, sort_key = args.sort, heads = {args.head}, genders = {}, inflections = {}}
local tracking_categories = {}
local aspect = norm_aspect[args.aspect or args.asp or args.a or false] or "?"
-- type of participle
local ptype = args[1]
if not ptype then
local PAGENAME = mw.title.getCurrentTitle().fullText
if PAGENAME:match("ąc[yae]$") then -- biegnący,
ptype = "aadj"
elseif PAGENAME:match("[nt][yae]$") then -- otwarty, uwielbiany
ptype = "padj"
elseif PAGENAME:match("ąc$") then
ptype = "cadv"
elseif PAGENAME:match("szy$") then
ptype = "aadv"
end
end
if ptype then
if ptype == "pasv-adj" or ptype == "padj" then
elseif ptype == "actv-adj" or ptype == "aadj" then
elseif ptype == "antr-adv" or ptype == "aadv" then
elseif ptype == "cont-adv" or ptype == "cadv" then
else
end
else
end
if (aspect == "pf") or (aspect == "pf-it") or (aspect == "pf-sem") then
table.insert(data.genders, "pf")
elseif (aspect == "impf") or (aspect == "impf-it") or (aspect == "impf-dur") then
table.insert(data.genders, "impf")
end
if aspect == "impf-dur" then
table.insert(data.inflections, {label = "durative"})
elseif aspect == "impf-it" then
table.insert(data.inflections, {label = "iterative"})
elseif aspect == "pf-sem" then
table.insert(data.inflections, {label = "semelfactive"})
elseif aspect == "pf-it" then
table.insert(data.inflections, {label = "iterative"})
end
return require("Module:headword").full_headword(data) ..
require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end
-- nouns and proper nouns
local noun_gender_cat = {
["m" ] = "နာမ်ပုလ္လိင်ပဝ်လာန်ဂမၠိုင်",
["m-an" ] = "နာမ်ပုလ္လိင်ပဝ်လာန်ဂမၠိုင်",
["m-in" ] = "နာမ်ပုလ္လိင်ပဝ်လာန်ဂမၠိုင်",
["m-pr" ] = "နာမ်ပုလ္လိင်ပဝ်လာန်ဂမၠိုင်",
["f" ] = "နာမ်ဣတ္တိလိင်ပဝ်လာန်ဂမၠိုင်",
["n" ] = "နာမ်နပုလ္လိင်ပဝ်လာန်ဂမၠိုင်",
["vr" ] = "နာမ်ပဝ်လာန်မနွံကဵုလက်သန်တြုံဂမၠိုင်",
["nv" ] = "နာမ်ပဝ်လာန်မနွံကဵုနာမ်လက်သန်ဂမၠိုင်",
["m-p" ] = false,
["m-pr-p"] = false,
["m-an-p"] = false,
["m-in-p"] = false,
["f-p" ] = false,
["n-p" ] = false,
["p" ] = false,
}
function export.show_noun(frame)
local args = frame:getParent().args
local data = {lang = lang, pos_category = frame.args.proper and "နာမ်မကိတ်ညဳ" or "နာမ်", categories = {}, sort_key = args.sort, heads = {args.head}, genders = {}, inflections = {}}
local tracking_categories = {}
if args.indecl and args.indecl ~= '' then
table.insert(data.inflections, { label = "ပါ်ပါဲထောံဟွံမာန်" })
table.insert(data.categories, "နာမ်ပဝ်လာန်နကဵုပါ်ပါဲထောံဟွံမာန်ဂမၠိုင်")
end
add_if_nonempty(data.inflections, collect_numbered(args, "abbr", { label = "နဲကဲပွမဒမၠေံ" }))
add_if_nonempty(data.inflections, collect_numbered(args, "dim", { label = "လဟုတ်စှ်ေ" }))
add_if_nonempty(data.inflections, collect_numbered(args, "aug", { label = "မဇၞော်မောဝ်တိုန်" }))
add_if_nonempty(data.inflections, collect_numbered(args, "f", { label = "ဣတ္တိလိင်" }))
add_if_nonempty(data.inflections, collect_numbered(args, "m", { label = "ပုလ္လိင်" }))
local g, genders = args.g or args[1]
if g then
if noun_gender_cat[g] ~= nil then
data.genders = { g }
table.insert(data.categories, noun_gender_cat[g] or nil)
if g == "m" then
end
else
data.genders = { "?" }
end
else
data.genders = { "?" }
end
return require("Module:headword").full_headword(data) ..
require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end
-- adjectives and adverbs
function export.show_adj_adv(frame)
local args = frame:getParent().args
local data = {lang = lang, categories = {}, sort_key = args.sort, heads = {args.head}, inflections = {}}
local tracking_categories = {}
local PAGENAME = mw.title.getCurrentTitle().text
if frame.args.adverb then
data.pos_category = "ကြိယာဝိသေသန"
else
data.pos_category = "နာမဝိသေသန"
end
local comparative, superlative = {}, {}
local i = 1
if args[1] == "-" then
if frame.args.adverb then
table.insert(data.categories, "ကြိယာဝိသေသနပဝ်လာန်မဂၠာဲပတုပ်ရံင်ဟွံမာန်ဂမၠိုင်")
else
table.insert(data.categories, "နာမဝိသေသနပဝ်လာန်မဂၠာဲပတုပ်ရံင်ဟွံမာန်ဂမၠိုင်")
end
if not args[2] then
table.insert(data.inflections, { label = "not comparable" })
else
table.insert(data.inflections, { label = "not always comparable" })
i = i + 1
while args[i] do
local comp, super
if frame.args.adverb and ((args[i] == "j") or (args[i] == "regular")) then
table.insert(comparative, PAGENAME .. "j")
table.insert(superlative, "naj" .. PAGENAME .. "j")
elseif args[i] == "bardziej" then
table.insert(comparative, "[[bardziej]] " .. PAGENAME)
table.insert(superlative, "[[najbardziej]] " .. PAGENAME)
elseif args[i] then
table.insert(comparative, args[i])
table.insert(superlative, "naj" .. args[i])
end
i = i + 1
end
comparative.label, comparative.accel = "ပတုပ်ရံင်", {form = "comparative"}
superlative.label, superlative.accel = "သဒ္ဒာ", {form = "superlative"}
table.insert(data.inflections, comparative)
table.insert(data.inflections, superlative)
end
elseif args[1] then
while args[i] do
local comp, super
if frame.args.adverb and ((args[i] == "j") or (args[i] == "regular")) then
table.insert(comparative, PAGENAME .. "j")
table.insert(superlative, "naj" .. PAGENAME .. "j")
elseif args[i] == "bardziej" then
table.insert(comparative, "[[bardziej]] " .. PAGENAME)
table.insert(superlative, "[[najbardziej]] " .. PAGENAME)
elseif args[i] then
table.insert(comparative, args[i])
table.insert(superlative, "naj" .. args[i])
end
i = i + 1
end
comparative.label, comparative.accel = "ပတုပ်ရံင်", {form = "comparative"}
superlative.label, superlative.accel = "သဒ္ဒာ", {form = "superlative"}
table.insert(data.inflections, comparative)
table.insert(data.inflections, superlative)
else
end
if not frame.args.adverb then
if args.adv then
if args.adv ~= '-' then
add_if_nonempty(data.inflections, collect_numbered(args, "adv", { label = "adverb" }))
end
else
end
end
add_if_nonempty(data.inflections, collect_numbered(args, "abbr", { label = "abbreviation" }))
return require("Module:headword").full_headword(data) ..
require("Module:utilities").format_categories(tracking_categories, lang, args.sort)
end
return export