Module:da-adjectives
Appearance
- The following documentation is located at Module:da-adjectives/documentation. [edit] Categories were auto-generated by Module:module categorization. [edit]
- Useful links: subpage list • links • transclusions • testcases • sandbox
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("da")
local function postprocess(args, data)
-- Check if the lemma form matches the page name
if (lang:makeEntryName(data.forms["pos_indf_c_sg"][1])) ~= mw.title.getCurrentTitle().text then
table.insert(data.categories, lang:getCanonicalName() .. " entries with inflection not matching pagename")
end
end
--[=[
Inflection functions
]=]--
function export.reg(frame)
local params = {
[1] = {},
[2] = {}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = nil, categories = {}}
local base = mw.title.getCurrentTitle().subpageText
local t = base .. "t"
local e = (args[1] or base) .. "e"
local comp
local sup
local supe
if mw.ustring.find(base, "[et]$") or mw.ustring.find(base, "sk$") then
t = base
end
if mw.ustring.find(base, "e$") then
e = base
end
if args[2] == "peri" then
comp = "[[mere]] [[" .. base .. "]]"
sup = "[[mest]] [[" .. base .. "]]"
supe = "[[mest]] [[" .. e .. "]]"
elseif args[2] == "st" then
comp = (args[1] or base) .. "ere"
sup = base .. "st"
supe = base .. "ste"
elseif args[2] == "est" then
comp = (args[1] or base) .. "ere"
sup = (args[1] or base) .. "est"
supe = (args[1] or base) .. "este"
end
data.forms["pos_indf_c_sg"] = {base}
data.forms["pos_indf_n_sg"] = {t}
data.forms["pos_indf_pl"] = {e}
data.forms["pos_defn"] = {e}
data.forms["comp_indf_c_sg"] = {comp}
data.forms["comp_indf_n_sg"] = {comp}
data.forms["comp_indf_pl"] = {comp}
data.forms["comp_defn"] = {comp}
data.forms["sup_indf_c_sg"] = {sup}
data.forms["sup_indf_n_sg"] = {sup}
data.forms["sup_indf_pl"] = {sup}
data.forms["sup_defn"] = {supe}
postprocess(args, data)
return make_table(data)
end
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return data.info and " (" .. mw.getContentLanguage():ucfirst(data.info or "") .. ")" or ""
elseif param == "lemma" then
return m_links.full_link({lang = lang, alt = mw.title.getCurrentTitle().text}, "term")
end
local form = data.forms[param]
if not form or #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, term = subform}))
end
return table.concat(ret, ", ")
end
local wikicode = mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-top',
args = {
title = 'Inflection of {{{lemma}}}{{{info}}}',
palette = 'red', -- Danish flag colour?
tall = 'yes' -- collapsible
}
}
wikicode = wikicode .. [=[
!
! positive
! comparative
! superlative
|-
! indefinite common singular
| {{{pos_indf_c_sg}}}
| {{{comp_indf_c_sg}}}
| {{{sup_indf_c_sg}}}<sup>2</sup>
|-
! indefinite neuter singular
| {{{pos_indf_n_sg}}}
| {{{comp_indf_n_sg}}}
| {{{sup_indf_n_sg}}}<sup>2</sup>
|-
! plural
| {{{pos_indf_pl}}}
| {{{comp_indf_pl}}}
| {{{sup_indf_pl}}}<sup>2</sup>
|-
! definite attributive<sup>1</sup>
| {{{pos_defn}}}
| {{{comp_defn}}}
| {{{sup_defn}}}
]=]
wikicode = wikicode .. mw.getCurrentFrame():expandTemplate{
title = 'inflection-table-bottom',
args = {
notes = '<sup>1</sup> When an adjective is applied predicatively to something definite,<br>the corresponding "indefinite" form is used.<br>' ..
'<sup>2</sup> The "indefinite" superlatives may not be used attributively.'
}
}
return mw.ustring.gsub(wikicode, "{{{([a-z0-9_:]+)}}}", repl) .. m_utilities.format_categories(data.categories, lang)
end
return export