-- deprecated obsolete unused module
-- see Module:gmh-noun instead
local export = {}
local m_links = require("Module:links")
local m_utils = require("Module:utilities")
local rmatch = mw.ustring.match
local lang = require("Module:languages").getByCode("gmh")
local decl_data = {}
decl_data = {
params = {
= {},
= {},
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "masculine, a-stem"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
local a3 = args.alt3 or args or a2
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"einen"}
data.forms = {"dër"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
if a2 == "2" then
data.forms = {a1}
data.forms = {a1}
data.forms = {a1 .. "es", a1 .. "s"}
data.forms = {a1 .. "e", a1}
data.forms = {a1 .. "e", a1}
data.forms = {a1 .. "e", a1}
data.forms = {a1 .. "e", a1}
data.forms = {a1 .. "en", a1 .. "n"}
else
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "es"}
data.forms = {a2 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "en"}
end
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "masculine, i-stem"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
local a3 = args.alt3 or args or a2
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"einen"}
data.forms = {"dër"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "es"}
data.forms = {a2 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "e"}
data.forms = {a3 .. "en"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "neuter, a-stem"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
local a3 = args.alt3 or args or a2
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"ein"}
data.forms = {"daȥ"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"daȥ"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"diu"}
if rmatch(a2, ".*e$") then
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "s"}
data.forms = {a2}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2}
data.forms = {a2 .. "n"}
elseif a2 == "2" then
data.forms = {a1}
data.forms = {a1}
data.forms = {a1 .. "s"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1 .. "n"}
elseif args.alt3 or args then
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "es"}
data.forms = {a2 .. "e"}
data.forms = {a3 .. "er"}
data.forms = {a3 .. "er"}
data.forms = {a3 .. "er"}
data.forms = {a3 .. "ern"}
else
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "es"}
data.forms = {a2 .. "e"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "e"}
data.forms = {a2 .. "en"}
end
end
})
decl_data = {
params = {
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "feminine, ō-stem"
local a1 = args.alt1 or args
data.forms = {"einiu"}
data.forms = {"einer"}
data.forms = {"einer"}
data.forms = {"eine"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dër"}
data.forms = {"die"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1 .. "n"}
data.forms = {a1 .. "n"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "feminine, i-stem"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"einiu"}
data.forms = {"einer"}
data.forms = {"einer"}
data.forms = {"eine"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dër"}
data.forms = {"die"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "e", a1}
data.forms = {a2 .. "e", a1}
data.forms = {a2 .. "e"}
data.forms = {a2 .. "e"}
data.forms = {a2 .. "e"}
data.forms = {a2 .. "en"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "masculine, weak"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"einen"}
data.forms = {"dër"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "neuter, weak"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"ein"}
data.forms = {"daȥ"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"daȥ"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"diu"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
table.insert(data.categories, "Old High German n-stem nouns")
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "feminine, weak"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"einiu"}
data.forms = {"einer"}
data.forms = {"einer"}
data.forms = {"eine"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dër"}
data.forms = {"die"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
data.forms = {a2 .. "n"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "masculine, consonant"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"ein"}
data.forms = {"eines"}
data.forms = {"einem"}
data.forms = {"einen"}
data.forms = {"dër"}
data.forms = {"dës"}
data.forms = {"dëm"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1, a1 .. "s"}
data.forms = {a1}
data.forms = {a2}
data.forms = {a2}
data.forms = {a2}
data.forms = {a2 .. "n"}
end
})
decl_data = {
params = {
= {},
= {},
= {},
= {},
},
}
setmetatable(decl_data, {__call = function(self, args, data)
data.decl_type = "feminine, consonant"
local a1 = args.alt1 or args
local a2 = args.alt2 or args or a1
data.forms = {"einiu"}
data.forms = {"einer"}
data.forms = {"einer"}
data.forms = {"eine"}
data.forms = {"diu"}
data.forms = {"dër"}
data.forms = {"dër"}
data.forms = {"die"}
data.forms = {"die"}
data.forms = {"dër"}
data.forms = {"dën"}
data.forms = {"die"}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a1}
data.forms = {a2}
data.forms = {a2}
data.forms = {a2}
data.forms = {a2 .. "n"}
end
})
-- The main entry point.
-- This is the only function that can be invoked from a template.
function export.show(frame)
local parent_args = frame:getParent().args
local decl_type = (frame.args or parent_args) or "a-m"
if not decl_data then
error("Unknown declension '" .. decl_type .. "'")
end
local data = {forms = {}, categories = {}}
data.head = parent_args or nil
local args = require("Module:parameters").process(parent_args, decl_data.params, true)
-- Override for templates
if not args then
setmetatable(args, {__index = function(self, key)
return "{{{" .. key .. "}}}"
end
})
end
-- Generate the forms
if parent_args.irr then
table.insert(data.categories, "Old High German irregular nouns")
if decl_data.irregular then
decl_data.irregular(data)
else
decl_data(args, data)
end
else
decl_data(args, data)
end
-- Make the table
return make_table(data)
end
function make_table(data)
local function show_form(form)
if not form then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
if mw.title.getCurrentTitle().nsText == "Reconstruction" and subform ~= "—" then
subform = "*" .. subform
end
table.insert(ret, m_links.full_link({lang = lang, term = subform}))
end
return table.concat(ret, ", ")
end
local function repl(param)
if param == "decl_type" then
return data.decl_type
else
return show_form(data.forms)
end
end
local wikicode = [=[<div class="NavFrame" style="max-width:30em">
<div class="NavHead" style="">Declension of {{{nom_sg}}} ({{{decl_type}}})</div>
<div class="NavContent">
{| style="background:#F9F9F9;text-align:center;width:100%;display:table" class="inflection-table" border="1px solid #505050"
|-
! style="background:#AAB8C0" |
! colspan="3" style="background:#AAB8C0" | singular
! colspan="2" style="background:#AAB8C0" | plural
|-
! style="background:#BBC9D0" |
! style="background:#BBC9D0" | ]
! style="background:#BBC9D0" | ]
! style="background:#BBC9D0" | noun
! style="background:#BBC9D0" | ]
! style="background:#BBC9D0" | noun
|-
! style="background:#BBC9D0" | nominative
| style="background:#EEEEEE" | {{{art_ind_nom_sg}}}
| style="background:#EEEEEE" | {{{art_def_nom_sg}}}
| {{{nom_sg}}}
| style="background:#EEEEEE" | {{{art_def_nom_pl}}}
| {{{nom_pl}}}
|-
! style="background:#BBC9D0" | genitive
| style="background:#EEEEEE" | {{{art_ind_gen_sg}}}
| style="background:#EEEEEE" | {{{art_def_gen_sg}}}
| {{{gen_sg}}}
| style="background:#EEEEEE" | {{{art_def_gen_pl}}}
| {{{gen_pl}}}
|-
! style="background:#BBC9D0" | dative
| style="background:#EEEEEE" | {{{art_ind_dat_sg}}}
| style="background:#EEEEEE" | {{{art_def_dat_sg}}}
| {{{dat_sg}}}
| style="background:#EEEEEE" | {{{art_def_dat_pl}}}
| {{{dat_pl}}}
|-
! style="background:#BBC9D0" | accusative
| style="background:#EEEEEE" | {{{art_ind_acc_sg}}}
| style="background:#EEEEEE" | {{{art_def_acc_sg}}}
| {{{acc_sg}}}
| style="background:#EEEEEE" | {{{art_def_acc_pl}}}
| {{{acc_pl}}}
]=]
wikicode = wikicode .. "|}</div></div>"
return (mw.ustring.gsub(wikicode, "{{{(+)}}}", repl)) .. m_utils.format_categories(data.categories, lang)
end
return export