Module:Pt-headword
local m_adj = require("Module:pt-adjectives")
local m_conj = require("Module:pt-conj")
local lang = require("Module:languages").getByCode("pt")
local export = {}
local pos_functions = {}
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local args = frame:getParent().args
PAGENAME = mw.title.getCurrentTitle().text
local poscat = frame.args[1] or error("Part of speech has not been specified. Please pass parameter 1 to the module invocation.")
local data = {lang = lang, pos_category = poscat, categories = {}, heads = {}, genders = {}, inflections = {}}
-- Call POS-specific function
if pos_functions[poscat] then
pos_functions[poscat](args, data)
end
if #data.heads == 0 then
data.heads = { args["head"] or "" }
end
return require("Module:headword").full_headword(data)
end
-- Display additional inflection information for an adjective
pos_functions["adjectives"] = function(args, data)
local base = args[1] or (mw.title.getCurrentTitle().nsText == "Template" and "{{{1}}}")
local infl_type = args[2] or (mw.title.getCurrentTitle().nsText == "Template" and "o") or ""
if base == "-" then
table.insert(data.inflections, {nil, label="[[Appendix:Glossary#invariable|invariable]]", accel=""})
elseif infl_type == "" then
local f_sg = {args["f"]}
local m_pl = {args["mpl"] or args["pl"]}
local f_pl = {args["fpl"]}
if #f_sg > 0 then
f_sg.label = "feminine singular"
f_sg.accel = "feminine-singular-form-of"
table.insert(data.inflections, f_sg)
end
if #f_pl == 0 or m_pl[1] == f_pl[1] then
m_pl.label = "plural"
m_pl.accel = "plural-form-of"
table.insert(data.inflections, m_pl)
else
m_pl.label = "masculine plural"
m_pl.accel = "masculine-plural-form-of"
table.insert(data.inflections, m_pl)
f_pl.label = "feminine plural"
f_pl.accel = "feminine-plural-form-of"
table.insert(data.inflections, f_pl)
end
else
if not m_adj.inflections[infl_type] then
error("Unknown inflection type '" .. infl_type .. "'")
end
if not base then error("Parameter 1 (base stem) may not be empty.") end
local infldata = {forms = {}, title = nil, categories = {}}
m_adj.inflections[infl_type](args, base, infldata)
if infldata.forms["m_sg"][1] == infldata.forms["f_sg"][1] then
table.insert(data.genders, "m")
table.insert(data.genders, "f")
else
table.insert(data.genders, "m")
local f_sg = infldata.forms["f_sg"]
f_sg.label = "feminine singular"
f_sg.accel = "feminine-singular-form-of"
table.insert(data.inflections, f_sg)
end
if infldata.forms["m_pl"][1] == infldata.forms["f_pl"][1] then
local pl = infldata.forms["m_pl"]
pl.label = "plural"
pl.accel = "plural-form-of"
table.insert(data.inflections, pl)
else
local m_pl = infldata.forms["m_pl"]
m_pl.label = "masculine plural"
m_pl.accel = "masculine-plural-form-of"
table.insert(data.inflections, m_pl)
local f_pl = infldata.forms["f_pl"]
f_pl.label = "feminine plural"
f_pl.accel = "feminine-plural-form-of"
table.insert(data.inflections, f_pl)
end
if plural and not mw.title.new(plural).exists then
table.insert(data.categories, "Portuguese nouns with missing plurals")
end
if plural2 and not mw.title.new(plural2).exists then
table.insert(data.categories, "Portuguese nouns with missing plurals")
end
end
local comp = args["comp"]
if comp == "no" then
table.insert(data.inflections, {label = "not [[Appendix:Glossary#comparable|comparable]]"})
table.insert(data.categories, lang:getCanonicalName() .. " uncomparable adjectives")
elseif comp == "both" then
table.insert(data.inflections, {label = "sometimes [[Appendix:Glossary#comparable|comparable]]"})
table.insert(data.categories, lang:getCanonicalName() .. " uncomparable adjectives")
else
table.insert(data.inflections, {label = "[[Appendix:Glossary#comparable|comparable]]"})
end
end
local function addVerbInflections(verb, inflections)
local first_pres_sing = verb.forms.indi.pres.sing['1']
if first_pres_sing and #first_pres_sing > 0 then
table.insert(inflections, { label = "first-person singular present indicative", first_pres_sing })
end
if verb.forms.part_past then
table.insert(inflections, { label = "past participle", verb.forms.part_past.sing.m })
end
if verb.forms.short_part_past then
table.insert(inflections, { label = "short past participle", verb.forms.short_part_past.sing.m })
end
if verb.forms.long_part_past then
table.insert(inflections, { label = "long past participle", verb.forms.long_part_past.sing.m })
end
end
local function addVerbCategories(verb, categories)
if verb.abundant then table.insert(categories, lang:getCanonicalName() .. " abundant verbs") end
if verb.defective then table.insert(categories, lang:getCanonicalName() .. " defective verbs") end
if verb.irregular then table.insert(categories, lang:getCanonicalName() .. " irregular verbs") end
if verb.forms.short_part_past and verb.forms.long_part_past then
table.insert(categories, lang:getCanonicalName() .. " verbs with short and long past participle")
end
end
pos_functions["verbs"] = function(args, data)
local beginning = args[1] or ""
local ending = args[2] or ""
local compound = args[3]
local verb = m_conj.inflect(beginning, ending, compound)
if verb then
table.insert(data.heads, verb.forms.infn.impe)
addVerbCategories(verb, data.categories)
addVerbInflections(verb, data.inflections)
else
table.insert(data.categories, lang:getCanonicalName() .. " verbs needing inflection")
end
end
return export
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.