A modult a Modul:pt-noun/doc lapon tudod dokumentálni
-- FIXME: Needs to be converted to use the standard ] module
local m_headword = require("Module:headword")
local m_gen = {
codes = {
= {type = "other", display = '<abbr title="nincs megadva nem">?</abbr>'},
= {type = "gender", display = '<abbr title="hímnem">m</abbr>'},
= {type = "gender", display = '<abbr title="nőnem">f</abbr>'},
= {type = "number", display = '<abbr title="többesszám">pl</abbr>'},
}
}
function m_gen.format_list(list)
local s = ""
if not list then
return s
end
list = mw.text.split(list, "-")
for n, g in ipairs(list) do
if (n > 1) then
s = s .. " "
end
s = s .. m_gen.codes.display
end
s = "<span class=\"gender\">" .. s .. "</span>"
return s
end
local m_plural = require("Module:pt-plural")
local lang = require("Module:languages").getByCode("pt")
local export = {}
local cats = {}
local PAGENAME
function export.show(frame)
local params = {
= {},
= {},
= {},
= {},
= {},
= {},
= {},
= {},
= {type = "boolean"},
= {alias_of = 2},
= {},
= {},
= {},
= {},
= {},
= {},
= {},
= {},
= {},
= {type = "boolean"},
}
local args, unrecognized_args =
require("Module:parameters").process(frame:getParent().args, params, true)
if next(unrecognized_args) then
require("Module:debug").track_unrecognized_args(unrecognized_args, "pt-noun")
end
PAGENAME = mw.title.getCurrentTitle().text
-- for compatibility with old pt-noun
if (args == "s") then args = PAGENAME .. "s"
elseif (args == "es") then args = PAGENAME .. "es" end
local is_plural = get_is_plural(args, args)
local items = {}
table.insert(items, get_countability(args, is_plural))
table.insert(items, get_lemma_plurals(args, is_plural))
table.insert(items, get_feminine(args, args, is_plural))
table.insert(items, get_feminine_plural(args, args, args, args == "-", is_plural))
table.insert(items, get_feminine(args, args, is_plural))
table.insert(items, get_feminine_plural(args, args, args, args == "-", is_plural))
if args then
table.insert(cats, "Portuguese nouns with metaphonic plurals")
end
return
get_headword(args) ..
get_genders(args, args, args, args) ..
get_inflection(items) ..
get_categories()
end
-- Returns the headword. If the pagename contains spaces or hyphens, its
-- constituents are wikified.
function get_headword(head)
if (head == nil) then
head = PAGENAME
local has_head_links = false
if head:find(" ", nil, false) then
head = mw.text.split(head, " ", true)
head = table.concat(head, "]] [[")
has_head_links = true
end
if (head:find("-", nil, false)) then
head = mw.text.split(head, "-", true)
head = table.concat(head, "]]-[[")
has_head_links = true
end
if (has_head_links == true) then
head = "]"
end
end
return m_headword.full_headword({lang = lang, pos_category = "főnevek", heads = {head}, categories = {}})
end
-- Returns the text containing the gender information.
-- If no gender is provided, or if the gender is '?', the entry is added to
-- ] and a request is returned.
-- If two genders are provided, the entry is added to [[Category:Portuguese
-- nouns with varying gender]].
-- If two genders are provided, but there are no qualifier for either, the
-- string (in variation) is added after the second, per ].
function get_genders(g1, g2, g1q, g2q)
if (g1 == "" or g1 == "?" or g1 == nil) then
table.insert(cats, "Requests for gender in Portuguese entries")
return " " .. please_add("gender")
end
if (g1 == "morf") then
g1 = "m"
g2 = "f"
elseif (g1 == "mf") then
g1 = "m-f"
end
if (g2 == "mf") then
g2 = "m-f"
end
local text = " "
if (g1 == "m-f") then
text = text .. m_gen.format_list({"m"}) .. ", " .. m_gen.format_list({"f"})
else
text = text .. m_gen.format_list({g1})
end
text = text .. qualifier(g1q)
if (g2 ~= "" and g2 ~= nil) then
text = text .. " or " .. m_gen.format_list({g2}) .. qualifier(g2q)
table.insert(cats, "Portuguese nouns with varying gender")
if (g2q == nil and g1q == nil) then
text = text .. qualifier("in variation")
end
end
return text
end
-- Returns a boolean indicating whether the noun is plural only.
-- If true, it also adds the entry to ].
function get_is_plural(g1, g2)
g1 = g1 or ""
g2 = g2 or ""
if (mw.ustring.find(g1, "p") ~= nil or mw.ustring.find(g2, "p") ~= nil) then
table.insert(cats, "Portuguese pluralia tantum")
return true
end
return false
end
-- Returns text indicating a special status with regards to countability. These
-- are plural only, uncountable and usually uncountable.
function get_countability(args, is_plural)
if (is_plural == true) then return "''plural only''" end
if (args == "-") then return "''uncountable''" end
if (args ~= nil) then return "''usually uncountable''" end
return nil
end
-- Returns the text with the description, link and qualifier of a plural
-- (i.e. "feminine plural of ] (qualifier)"). If the plural is not
-- present as a parameter, ] is used to automatically figure
-- it out from the lemma. If that is impossible, a request is returned and the
-- entry is added to ].
function get_primary_plural(lemma, pl, description, class, qualifier)
local category = ""
local generated_plural = m_plural.get_plural(lemma)
if (pl == "" or pl == nil) then
pl = generated_plural
elseif pl ~= generated_plural then
category = require("Module:utilities").format_categories({lang:getCanonicalName() .. " rendhagyó főnevek"})
end
if (pl == "" or pl == nil) then
table.insert(cats, "Requests for inflections in Portuguese noun entries")
return please_add(description)
end
return merge(description, class, pl, qualifier) .. category
end
-- Returns the text with the desciption (always "or"), link and qualifier of an
-- alternative plural. If none is provided, nil is returned.
function get_secondary_plural(pl, class, qualifier)
if (pl ~= nil and pl ~= "") then
return merge(" or", class, pl, qualifier)
end
return ""
end
-- Puts together the text of the lemma's primary and two secondary plurals.
function get_lemma_plurals(args, is_plural)
if (is_plural == true) then
return nil
end
local class = {form = "p"}
local pl = args;
if (pl == nil or pl == "") then
pl = args
end
if (pl == "?") then
table.insert(cats, "Requests for inflections in Portuguese noun entries")
return please_add("többesszám")
elseif (pl ~= "-") then
local text = get_primary_plural(PAGENAME, pl, "többesszám", class, args)
text = text .. get_secondary_plural(args, class, args)
text = text .. get_secondary_plural(args, class, args)
return text
end
return nil
end
function get_feminine(f, qualifier, is_plural)
if (f == "" or f == nil) then
return nil
end
return merge("feminine", {form = "f"}, f, qualifier)
end
function get_feminine_plural(f, fpl, qualifier, is_unc, is_plural)
if (is_plural == true or is_unc == true or f == nil or f == "") then
return nil
end
return get_primary_plural(f, fpl, "feminine plural", {form = "f|p"}, qualifier)
end
-- Returns the parenthetical part of the headword line (plurals and feminines).
function get_inflection(items)
if (table.getn(items) == 0) then return "" end
local text = " ("
for c = 1, table.getn(items) do
if (c > 1) then text = text .. ", " end
text = text .. items
end
return text .. ")"
end
-- Returns the text containing the categories that the entry will be added to.
function get_categories()
return require("Module:utilities").format_categories(cats, lang)
end
-- Nerges the form description (e.g. “plural”, “feminine”), word, its class
-- (e.g. “plural-form-of gender-mpl”) and qualifier if any.
-- FIXME: Needs better parameter names.
function merge(f, c, w, q)
if (w == nil or w == "") then return "" end
text = ""
text = text .. "''" .. f .. "'' "
text = text .. make_link(w, c)
if (q ~= nil and q ~= "") then text = text .. qualifier(q) end
return text
end
-- Returns a piece of text boldened and wikified (unless it is the same as the
-- pagename).
function make_link(text, accel)
return require("Module:links").full_link({lang = lang, accel = accel, term = text}, "bold")
end
-- Returns a text with a request for lacking information.
function please_add(text)
--table.insert(cats, "Requests for attention concerning Portuguese")
return "<sup><small><span style='color:#AAAAAA;'>please add " .. text .. "</span></small></sup>"
end
function qualifier(text)
if (text == nil or text == "") then return "" end
return ' <span class="ib-brac"><span class="qualifier-brac">(</span></span><span class="ib-content"><span class="qualifier-content">' .. text ..
'</span></span><span class="ib-brac"><span class="qualifier-brac">)</span></span>'
end
return export