Модул:nl-adjective
Намуди зоҳирӣ
Documentation for this module may be created at Модул:nl-adjective/doc
--[=[
Модули мазкур дар вазифаҳои барои ташкили мизњои оҳанг барои Голландия
сифатҳо.
Аҳамият диҳед, ки:
Дар боти [[User: MewBot]] истифода мебарад ин модул ба таври худкор вурудоти эҷод
барои шаклу сифат. Агар шумо тағйир чӣ кор ин модул, лутфан огоњ
соҳиби боти ба тавре ки боти мумкин аст аз нав!
]=]--
local m_links = require("Module:links")
local m_scriptutils = require("Module:script utilities")
local lang = require("Module:languages").getByCode("nl")
local export = {}
-- Вазифаҳо, ки мекунед, ки оҳанге воқеии бо роҳи ташкил кардани шаклҳои мӯҳлати асосии.
local inflections = {}
-- Аз нуқтаи вуруди асосии.
-- Ин танҳо Функсияи, ки мумкин аст аз ҷониби як шаблон забҳ аст.
function export.show(frame)
PAGENAME = mw.title.getCurrentTitle().text
NAMESPACE = mw.title.getCurrentTitle().nsText
local word_type = frame.args["word_type"] or "сифат"
local args = frame:getParent().args
if not inflections[word_type] then
error("Навъи оҳанг номаълуми '" .. infl_type .. "'")
end
local data = {forms = {}, comparable = true}
-- Тавлид шаклҳои
inflections[word_type](args, data)
return make_table(data)
end
inflections["сифат"] = function(args, data, word_type)
-- Даст параметрҳои
local pred_pos = args["pred"]; if pred_pos == "" then pred_pos = nil end
local infl_pos = args[1]; if infl_pos == "" then infl_pos = nil end
local part_pos = args["part"]; if part_pos == "" then part_pos = nil end
local comp = args[2]; if comp == "" then comp = nil end
local sup = args[3]; if sup == "" then sup = nil end
if comp == "-" then
data.comparable = false
end
local base = (NAMESPACE == "шаблон" and "-" or PAGENAME)
-- Дараҷаи мусбат
if pred_pos == "-" then pred_pos = nil else pred_pos = pred_pos or base end
infl_pos = infl_pos or export.make_inflected(base)
if part_pos == "-" then part_pos = nil else part_pos = part_pos or export.make_partitive(base) end
data.forms["pred_pos"] = {pred_pos}
data.forms["mfsg_pos"] = {infl_pos}
data.forms["nsg_pos"] = {base}
data.forms["pl_pos"] = {infl_pos}
data.forms["def_pos"] = {infl_pos}
data.forms["part_pos"] = {part_pos}
-- Зарраҳои ҳаргиз шаклҳои муқоисавӣ ва волотар доранд.
-- Агар онҳо, он гоҳ, ки шояд дар асл сифатҳои ҳастед.
if data.comparable then
-- Дараҷаи қиёсӣ
comp = comp or export.make_comparative(base, infl_pos)
local infl_comp = export.make_inflected(comp); if base:find("[^eio]en$") or base:find("[aeou]ien$") then infl_comp = comp end
local part_comp = export.make_partitive(comp)
data.forms["pred_comp"] = {comp}
data.forms["mfsg_comp"] = {infl_comp}
data.forms["nsg_comp"] = {comp}
data.forms["pl_comp"] = {infl_comp}
data.forms["def_comp"] = {infl_comp}
data.forms["part_comp"] = {part_comp}
-- Дараҷаи волотар
sup = sup or export.make_superlative(base, part_pos)
local infl_sup = export.make_inflected(sup)
data.forms["pred_sup"] = {"het [[" .. sup .. "]]", "het [[" .. infl_sup .. "]]"}
data.forms["mfsg_sup"] = {infl_sup}
data.forms["nsg_sup"] = {infl_sup}
data.forms["pl_sup"] = {infl_sup}
data.forms["def_sup"] = {infl_sup}
data.forms["part_sup"] = nil
end
end
inflections["pres-ptc"] = function(args, data)
data.comparable = false
inflections["сифат"](args, data)
-- Дар шакли мустанадӣ аз зарра мазкур метавонад -e низ доранд,
-- Дар ҳукмҳои мисли "Hij is stervende".
table.insert(data.forms["pred_pos"], data.forms["mfsg_pos"][1])
end
inflections["past-ptc"] = function(args, data)
data.comparable = false
inflections["сифат"](args, data)
end
inflections["номунтазам"] = function(args, data)
local base = args[1]; if base == "" then base = nil end
base = base or (NAMESPACE == "Template" and "veel" or PAGENAME)
if base == "veel" then
data.forms["pred_pos"] = {"veel"}
data.forms["mfsg_pos"] = {"veel"}
data.forms["nsg_pos"] = {"veel"}
data.forms["pl_pos"] = {"veel"}
data.forms["def_pos"] = {"vele"}
data.forms["part_pos"] = nil
data.forms["pred_comp"] = {"meer"}
data.forms["mfsg_comp"] = {"meer"}
data.forms["nsg_comp"] = {"meer"}
data.forms["pl_comp"] = {"meer"}
data.forms["def_comp"] = nil
data.forms["part_comp"] = nil
data.forms["pred_sup"] = {"het [[meest]]", "het [[meeste]]"}
data.forms["mfsg_sup"] = nil
data.forms["nsg_sup"] = nil
data.forms["pl_sup"] = nil
data.forms["def_sup"] = {"meeste"}
data.forms["part_sup"] = nil
elseif base == "weinig" then
data.forms["pred_pos"] = {"weinig"}
data.forms["mfsg_pos"] = {"weinig"}
data.forms["nsg_pos"] = {"weinig"}
data.forms["pl_pos"] = {"weinig"}
data.forms["def_pos"] = {"weinige"}
data.forms["part_pos"] = nil
data.forms["pred_comp"] = {"minder"}
data.forms["mfsg_comp"] = {"minder"}
data.forms["nsg_comp"] = {"minder"}
data.forms["pl_comp"] = {"minder"}
data.forms["def_comp"] = nil
data.forms["part_comp"] = nil
data.forms["pred_sup"] = {"het [[minst]]", "het [[minste]]"}
data.forms["mfsg_sup"] = {"minste"}
data.forms["nsg_sup"] = {"minste"}
data.forms["pl_sup"] = {"minste"}
data.forms["def_sup"] = {"minste"}
data.forms["part_sup"] = nil
else
error("Не тасрифкунӣ номунтазам аст, ки барои ин калима маълум аст. Лутфан, онро ба илова [[Module:nl-adjective]].")
end
end
-- Чор вазифаҳо барои сохтани шаклҳои гуногун.
-- Ин содирот, чунки Модули:NL-headword низ онҳоро истифода мебарад, ба таъсиси
-- Муқоисавӣ ва шаклҳои бузургтар.
function export.make_inflected(base)
-- Сифатҳо моҳаи дар вазне -en ё -e даст нест -e иловагӣ.
if base:find("[^eio]en$") or base:find("[aeou]ien$") or base:find("[^eio]e$") then
return base
-- Сифатҳо моҳаи дар digraphs муайян даст диерезисӣ.
elseif base:find("[eio]e$") then
return base .. "ë"
else
return base .. "e"
end
end
function export.make_partitive(base)
-- Сифатҳо моҳаи дар як ҳуштакӣ ба як -s иловагӣ дарёфт накунем
if base:find("s$") or base:find("sch$") or base:find("x$") or base:find("sj$") or base:find("sh$") then
return base
-- Сифатҳо моҳаи дар як овози садонок дароз даст ҳичгоҳ пеш аз -s
elseif base:find("[^aeiou][aiouy]$") then
return base .. "'s"
else
return base .. "s"
end
end
function export.make_comparative(base, inflected)
if not inflected then
inflected = export.make_inflected(base)
end
-- Сифатҳо моҳаи дар -r гирифтани -d- иловагӣ дар муқоисавии,
-- Рад кардани шакли оҳанганд
if base:find("r$") then
return base .. "der"
-- Агар шакли оҳанганд ки дар -e хотима надиҳед, онро илов
elseif not inflected:find("[eë]$") then
return inflected .. "er"
else
return inflected .. "r"
end
end
function export.make_superlative(base, partitive)
if not partitive then
partitive = export.make_partitive(base)
end
-- Сифатҳо дар -ide доранд волотар -iedst
if base:find("[iï]de$") then
return base:gsub("([iï])de$", "%1ed") .. "st"
elseif partitive then
return partitive .. "t"
else
return base .. "st"
end
end
function show_form(form)
if not form then
return "—"
elseif type(form) ~= "table" then
error("a non-table value was given in the list of inflected forms.")
elseif #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link(subform, nil, lang, nil, nil, nil, {}, false))
end
return table.concat(ret, "<br/>")
end
-- Make the table
function make_table(data)
return [=[
<div class="NavFrame" style="width: ]=] .. (data.comparable and 60 or 30) .. [=[em;">
<div class="NavHead" style="background: #CCCCFF; text-align: left;">шаклҳои асосии ]=] .. m_links.full_link(nil, PAGENAME, lang, nil, "term", nil, {}, false) .. [=[</div>
<div class="NavContent">
{| class="inflection-table" style="width:100%; text-align:center; line-height:125%;" cellspacing="1" cellpadding="3"
|- style="background: #CCCCFF;"]=] .. (data.comparable and [=[
| colspan="2" style="background: #E6E6FF; width: 25%;" |
! style="width: 25%;" | [[positive degree|мусбат]]
! style="width: 25%;" | [[comparative degree|муқоисавии]]
! style="width: 25%;" | [[superlative degree|волотар]]]=] or [=[
| colspan="2" style="background: #E6E6FF; width: 50%;" |
! style="width: 50%;" | [[positive degree|мусбат]]]=]) .. [=[
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" colspan="2" | [[мустанадӣ]]/[[зарфи]]
| ]=] .. show_form(data.forms["pred_pos"]) .. (data.comparable and " || " .. show_form(data.forms["pred_comp"]) .. " || " .. show_form(data.forms["pred_sup"]) or "") .. [=[
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" rowspan="3" | [[номуайян]]
! style="background: #CCCCFF;" | [[мардона|m.]]/[[бонувон|f.]] [[ягонаи|sing.]]
| ]=] .. show_form(data.forms["mfsg_pos"]) .. (data.comparable and " || " .. show_form(data.forms["mfsg_comp"]) .. " || " .. show_form(data.forms["mfsg_sup"]) or "") .. [=[
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" | [[neuter|n.]] [[ягонаи|sing.]]
| ]=] .. show_form(data.forms["nsg_pos"]) .. (data.comparable and " || " .. show_form(data.forms["nsg_comp"]) .. " || " .. show_form(data.forms["nsg_sup"]) or "") .. [=[
|- style="background: #F2F2FF;"
! style="background:#CCCCFF;" | [[ҷамъ]]
| ]=] .. show_form(data.forms["pl_pos"]) .. (data.comparable and " || " .. show_form(data.forms["pl_comp"]) .. " || " .. show_form(data.forms["pl_sup"]) or "") .. [=[
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" colspan="2" | [[муайян]]
| ]=] .. show_form(data.forms["def_pos"]) .. (data.comparable and " || " .. show_form(data.forms["def_comp"]) .. " || " .. show_form(data.forms["def_sup"]) or "") .. [=[
|- style="background: #F2F2FF;"
! style="background: #CCCCFF;" colspan="2" | [[ҳиҷобести]]
| ]=] .. show_form(data.forms["part_pos"]) .. (data.comparable and " || " .. show_form(data.forms["part_comp"]) .. " || " .. show_form(data.forms["part_sup"]) or "") .. [=[
|}</div></div>]=]
end
return export