Modul:it-head
Penampilan
- Laman modul ini kekurangan sublaman pendokumenan. Sila cipta laman pendokumenan tersebut.
- Pautan berguna: senarai sublaman • pautan • transklusi • kes ujian • kotak pasir
-- This module contains code for Italian headword templates.
-- Templates covered are it-adj and it-noun.
-- See Module:itconj for Italian conjugation templates.
local export = {}
local lang = require("Module:languages").getByCode("it")
function export.itadj(frame)
local args = frame:getParent().args
PAGENAME = mw.title.getCurrentTitle().text
local genders = {}
local inflections = {}
local categories = {"Adjektif bahasa Itali"}
local head = args["head"]; if head == "" then head = nil end
local sort_key = args["sort"] or ""; if sort_key == "" then sort_key = nil end
local stem = args[1] or error("1st parameter (stem of adjective) missing!")
local end1 = args[2]
-- no ending vowel parameters - generate default
if not end1 then
genders = {"m"}
inflections = {
{label = "feminin", stem .. "a"},
{label = "jamak maskulin", make_plural(stem .. "o","m")},
{label = "jamak feminin", make_plural(stem .. "a","f")} }
else
local end2 = args[3] or error("Either 0, 2 or 4 vowel endings should be supplied!")
local end3 = args[4]
-- 2 ending vowel parameters - m and f are identical
if not end3 then
genders = {"m", "f"}
inflections = {
{label = "jamak maskulin dan feminin", stem .. end2} }
-- 4 ending vowel parameters - specify exactly
else
local end4 = args[5] or error("Either 0, 2 or 4 vowel endings should be supplied!")
genders = {"m"}
inflections = {
{label = "feminin", stem .. end2},
{label = "jamak maskulin", stem .. end3},
{label = "jamak feminin", stem .. end4} }
end
end
return require("Module:headword").full_headword(lang, nil, head, nil, genders, inflections, categories, sort_key)
end
function export.itnoun(frame)
local args = frame:getParent().args
PAGENAME = mw.title.getCurrentTitle().text
local genders = {}
local inflections = {}
local categories = {"Kata nama bahasa Itali"}
local head = args["head"]; if head == "" then head = nil end
local sort_key = args["sort"] or ""; if sort_key == "" then sort_key = nil end
local gender = args[1]; if gender == "" then gender = nil end
local plural = args[2]; if plural == "" then plural = nil end
if args[3] or args[4] then
error("Third and fourth parameter should be empty.")
end
-- Gender
if gender == "mf" then
genders = {"m", "f"}
else
genders = {gender}
end
if #genders == 0 then
genders = {"?"}
end
-- Plural
if not plural then
plural = make_plural(PAGENAME, genders[1])
end
if plural == "-" then
table.insert(inflections, {label = "bentuk tetap"})
else
table.insert(inflections, {label = "jamak", plural})
end
-- Other gender
local feminine = args["f"]; if feminine == "" then feminine = nil end
local masculine = args["m"]; if masculine == "" then masculine = nil end
if feminine then
table.insert(inflections, {label = "feminin", feminine})
end
if masculine then
table.insert(inflections, {label = "maskulin", masculine})
end
-- Category
if (head or PAGENAME):find('o$') and gender=="f" then
table.insert(categories,"Kata nama bahasa Itali dengan genus yang tidak teratur")
end
if (head or PAGENAME):find('a$') and gender=="m" then
table.insert(categories,"Kata nama bahasa Itali dengan genus yang tidak teratur")
end
return require("Module:headword").full_headword(lang, nil, head, nil, genders, inflections, categories, sort_key)
end
-- Generate a default plural form, which is correct for most regular nouns
function make_plural(word, gender)
-- If there are spaces in the term, then we can't reliably form the plural.
-- Return nothing instead.
if word:find(" ") then
return nil
elseif word:find("io$") then
word = word:gsub("io$", "i")
elseif word:find("ologo$") then
word = word:gsub("o$", "i")
elseif word:find("[cg]o$") then
word = word:gsub("o$", "hi")
elseif word:find("o$") then
word = word:gsub("o$", "i")
elseif word:find("[cg]a$") then
word = word:gsub("a$", (gender == "m" and "hi" or "he"))
elseif word:find("[cg]ia$") then
word = word:gsub("ia$", "e")
elseif word:find("a$") then
word = word:gsub("a$", (gender == "m" and "i" or "e"))
elseif word:find("e$") then
word = word:gsub("e$", "i")
end
return word
end
-- Generate a default feminine form
function make_feminine(word, gender)
if word:find("o$") then
return word:gsub("o$", "a")
else
return word
end
end
return export