Bu Lua modülü, şu şablonların çıktısını vermektedir:
-- This module contains code for Italian headword templates.
-- Templates covered are it-adj, it-noun and it-proper noun.
-- See ] for Italian conjugation templates.
local export = {}
local lang = require("Modül:diller").getirKodaGore("it")
function export.itadj(frame)
local params = {
= {},
= {},
= {},
= {},
= {},
= {},
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local veri = {dil = lang, soz_kategorisi = "ön adlar", kategoriler = {}, sira_anahtari = args, baslar = {args}, cinsiyetler = {}, cekimler = {}}
local stem = args
local end1 = args
if not stem then -- all specified
veri.baslar = args
veri.cekimler = {
{etiket = "dişil tekil", args},
{etiket = "eril çoğul", args},
{etiket = "dişil çoğul", args}
}
elseif not end1 then -- no ending vowel parameters - generate default
veri.cekimler = {
{etiket = "dişil tekil", stem .. "a"},
{etiket = "eril çoğul", make_plural(stem .. "o","m")},
{etiket = "dişil çoğul", make_plural(stem .. "a","f")}
}
else
local end2 = args or error("Either 0, 2 or 4 vowel endings should be supplied!")
local end3 = args
if not end3 then -- 2 ending vowel parameters - m and f are identical
veri.cekimler = {
{etiket = "masculine and feminine plural", stem .. end2}
}
else -- 4 ending vowel parameters - specify exactly
local end4 = args or error("Either 0, 2 or 4 vowel endings should be supplied!")
veri.cekimler = {
{etiket = "dişil tekil", stem .. end2},
{etiket = "eril çoğul", stem .. end3},
{etiket = "dişil çoğul", stem .. end4}
}
end
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
end
function export.itnoun(frame)
local PAGENAME = mw.title.getCurrentTitle().text
local params = {
= {list = "c", default = "?"},
= {list = "ç"},
= {list = true},
= {list = true},
= {list = true},
= {list = true},
= {list = true},
= {},
}
local args = require("Modül:parameters").process(frame:getParent().args, params)
local veri = {dil = lang, soz_kategorisi = "adlar", kategoriler = {}, sira_anahtari = args, baslar = args, cinsiyetler = {}, cekimler = {}}
-- Gender
if args == "mf" then
veri.cinsiyetler = {"m", "f"}
else
veri.cinsiyetler = args
end
if #veri.cinsiyetler == 0 then
veri.cinsiyetler = {"?"}
end
local head = veri.baslar and require("Modül:bağlantılar").kaldir_baglantilari(veri.baslar) or PAGENAME
-- Plural
local plural = args
if not plural and #args == 0 and #args == 0 then
args = make_plural(head, veri.cinsiyetler)
end
if plural == "~" then
table.insert(veri.cekimler, {etiket = "] ve ]"})
table.insert(veri.kategoriler, "İtalyanca sayılamayan adlar")
table.insert(veri.kategoriler, "İtalyanca sayılabilen adlar")
end
if plural == "-" then
table.insert(veri.cekimler, {etiket = "]"})
table.insert(veri.kategoriler, "İtalyanca sayılamayan adlar")
end
if plural ~= "-" and plural ~= "~" and #args > 0 then
args.etiket = "çoğul"
table.insert(veri.cekimler, args)
end
-- Other gender
if #args > 0 then
args.etiket = "dişil"
table.insert(veri.cekimler, args)
end
if #args > 0 then
args.etiket = "eril"
table.insert(veri.cekimler, args)
end
if #args > 0 then
args.etiket = "eril çoğul"
table.insert(veri.cekimler, args)
end
if #args > 0 then
args.etiket = "dişil çoğul"
table.insert(veri.cekimler, args)
end
-- Category
if head:find('o$') and (veri.cinsiyetler == "d" or veri.cinsiyetler == "f") then
table.insert(veri.kategoriler, "İtalyanca geçersiz cinsiyetli adlar")
end
if head:find('a$') and (veri.cinsiyetler == "e" or veri.cinsiyetler == "m") then
table.insert(veri.kategoriler, "İtalyanca geçersiz cinsiyetli adlar")
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
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("o$") then
word = word:gsub("o$", "hi")
elseif word:find("o$") then
word = word:gsub("o$", "i")
elseif word:find("a$") then
word = word:gsub("a$", (gender == "m" and "hi" or "he"))
elseif word:find("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
function export.itprop(frame)
local params = {
= {list = "g", default = "?"},
= {},
= {},
= {},
= {},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local veri = {dil = lang, soz_kategorisi = "proper nouns", kategoriler = {}, sira_anahtari = args, baslar = {args}, cinsiyetler = args, cekimler = {}}
for i, g in ipairs(veri.cinsiyetler) do
if g == "p" then
veri.cinsiyetler = "?-p"
end
if g == "m-p" or g == "f-p" or g == "?-p" or g == "p" then
table.insert(veri.cekimler, {etiket = "]"})
table.insert(veri.kategoriler, lang:getirAsilAd() .. " pluralia tantum")
break
end
end
if args then
table.insert(veri.cekimler, {etiket = "eril", args})
end
if args then
table.insert(veri.cekimler, {etiket = "dişil", args})
end
return require("Modül:başlık başı").tam_baslikbasi(veri)
end
return export
-- For Vim, so we get 4-space tabs
-- vim: set ts=4 sw=4 noet: