Modul:no-sub
Dokumentasjon for denne modulen kan opprettes på Modul:no-sub/dok
local gt = require("Modul:grammar-table")
local export = require("Modul:grammar")
local lang_code_param = "no"
local part_of_speech_param = "sub"
local nynorsk_param = "n"
local bokmal_param = "b"
local riksmal_param = "r"
local unregularized_param = "u"
local singular_param = "entall"
local plural_param = "flertall"
local uncountable_templatename_suffix = "-utel"
local masculine_templatename = "no-sub-m"
local feminine_templatename = "no-sub-f"
local neuter_templatename = "no-sub-n"
local lang_tags = {
n = "Nynorsk",
b = "Bokmål",
r = "Riksmål",
u = "Unormert"
}
function export._getAcceptedParameters()
return {nynorsk_param, bokmal_param, riksmal_param, unregularized_param, singular_param, plural_param, uncountable_templatename_suffix, masculine_templatename, feminine_templatename, neuter_templatename}
end
function export._getForms(pagename, templatename, args, meta, format)
local last_1 = mw.ustring.sub(pagename, -1, -1)
local last_2 = mw.ustring.sub(pagename, -2, -1)
local last_4 = mw.ustring.sub(pagename, -4, -1)
local without_last_1 = mw.ustring.sub(pagename, 1, -2)
local without_last_2 = mw.ustring.sub(pagename, 1, -3)
local without_last_3 = mw.ustring.sub(pagename, 1, -4)
local third_from_end = mw.ustring.sub(pagename, -3, -3)
local fourth_from_end = mw.ustring.sub(pagename, -4, -4)
local is_double_consonant = third_from_end == fourth_from_end
local last_1 = mw.ustring.sub(pagename, -1, -1)
local clitic = (last_1 == "s" or last_1 == "z" or last_1 == "x") and "'" or "s"
local gender = meta.gender
local stem = pagename
local plural_stem = pagename
local include_bokmal = meta.b
local include_nynorsk = meta.n
local include_riksmal = meta.r
local bokmal_plural_suffix = meta.b_plural_suffix
local nynorsk_plural_suffix = meta.n_plural_suffix
local riksmal_plural_suffix = meta.r_plural_suffix
local forms = {}
if last_2 == "er" then
stem = pagename
if is_double_consonant then
plural_stem = without_last_3 .. "r"
else
plural_stem = without_last_2
end
elseif last_1 == "e" then
stem = without_last_1
plural_stem = without_last_1
elseif last_2 == "el" then
stem = pagename
if is_double_consonant then
plural_stem = without_last_3 .. "l"
else
plural_stem = without_last_2 .. "l"
end
elseif last_1 == "m" and last_2 ~= "um" then
stem = pagename .. "m"
plural_stem = pagename .. "m"
end
-- and "um"/"ium"? (will definitely fail)
if include_bokmal then
if gender == "m" then
if bokmal_plural_suffix == "er" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "en"
forms.b_undet_plur_nom = plural_stem .. "er"
forms.b_det_plur_nom = plural_stem .. "ene"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ens"
forms.b_undet_plur_gen = plural_stem .. "ers"
forms.b_det_plur_gen = plural_stem .. "enes"
elseif bokmal_plural_suffix == "ere" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = pagename .. "en"
forms.b_undet_plur_nom = plural_stem .. "ere"
forms.b_det_plur_nom = plural_stem .. "erne"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = pagename .. "ens"
forms.b_undet_plur_gen = plural_stem .. "eres"
forms.b_det_plur_gen = plural_stem .. "ernes"
elseif bokmal_plural_suffix == "0" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "en"
forms.b_undet_plur_nom = pagename
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ens"
forms.b_undet_plur_gen = pagename .. clitic
forms.b_det_plur_nom = plural_stem .. "ene, " .. plural_stem .. "a"
forms.b_det_plur_gen = plural_stem .. "enes, " .. plural_stem .. "as"
elseif bokmal_plural_suffix == "re" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "en"
forms.b_undet_plur_nom = plural_stem .. "re"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ens"
forms.b_undet_plur_gen = plural_stem .. "res"
forms.b_det_plur_nom = plural_stem .. "rene, " .. plural_stem .. "ra"
forms.b_det_plur_gen = plural_stem .. "renes, " .. plural_stem .. "ras"
elseif bokmal_plural_suffix == "er/ere/re" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "en"
forms.b_undet_plur_nom = plural_stem .. "er, " .. plural_stem .. "ere, " .. plural_stem .. "re"
forms.b_det_plur_nom = plural_stem .. "erne, " .. plural_stem .. "rene, " .. plural_stem .. "ra"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ens"
forms.b_undet_plur_gen = plural_stem .. "ers, " .. plural_stem .. "eres, " .. plural_stem .. "res"
forms.b_det_plur_gen = plural_stem .. "ernes, " .. plural_stem .. "renes, " .. plural_stem .. "ras"
end
elseif gender == "f" then
if bokmal_plural_suffix == "er" then
forms.b_undet_sing_nom = pagename
forms.b_undet_plur_nom = plural_stem .. "er"
forms.b_det_plur_nom = plural_stem .. "ene"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_undet_plur_gen = plural_stem .. "ers"
forms.b_det_plur_gen = plural_stem .. "enes"
forms.b_det_sing_nom = stem .. "en, " .. stem .. "a"
forms.b_det_sing_gen = stem .. "ens, " .. stem .. "as"
end
elseif gender == "n" then
if bokmal_plural_suffix == "0" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "et"
forms.b_undet_plur_nom = pagename
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ets"
forms.b_undet_plur_gen = pagename .. clitic
forms.b_det_plur_nom = plural_stem .. "ene, " .. plural_stem .. "a"
forms.b_det_plur_gen = plural_stem .. "enes, " .. plural_stem .. "as"
elseif bokmal_plural_suffix == "er" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "et"
forms.b_undet_plur_nom = plural_stem .. "er"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ets"
forms.b_undet_plur_gen = plural_stem .. "ers"
forms.b_det_plur_nom = plural_stem .. "ene, " .. plural_stem .. "a"
forms.b_det_plur_gen = plural_stem .. "enes, " .. plural_stem .. "as"
elseif bokmal_plural_suffix == "0/er" then
forms.b_undet_sing_nom = pagename
forms.b_det_sing_nom = stem .. "et"
forms.b_undet_plur_nom = pagename .. ", " .. plural_stem .. "er"
forms.b_undet_sing_gen = pagename .. clitic
forms.b_det_sing_gen = stem .. "ets"
forms.b_undet_plur_gen = pagename .. clitic .. ", " .. plural_stem .. "ers"
forms.b_det_plur_nom = plural_stem .. "ene, " .. plural_stem .. "a"
forms.b_det_plur_gen = plural_stem .. "enes, " .. plural_stem .. "as"
end
end
end
if include_nynorsk then
forms.n_undet_sing_nom = "?"
forms.n_det_sing_nom = "?"
forms.n_undet_plur_nom = "?"
forms.n_det_plur_nom = "?"
end
if include_riksmal then
forms.r_undet_sing_nom = "?"
forms.r_det_sing_nom = "?"
forms.r_undet_plur_nom = "?"
forms.r_det_plur_nom = "?"
forms.r_undet_sing_gen = "?"
forms.r_det_sing_gen = "?"
forms.r_undet_plur_gen = "?"
forms.r_det_plur_gen = "?"
end
forms.b_undet_sing_nom = args[1] or forms.b_undet_sing_nom
forms.b_det_sing_nom = args[2] or forms.b_det_sing_nom
forms.b_undet_plur_nom = args[3] or forms.b_undet_plur_nom
forms.b_det_plur_nom = args[4] or forms.b_det_plur_nom
forms.b_undet_sing_gen = args[5] or forms.b_undet_sing_gen
forms.b_det_sing_gen = args[6] or forms.b_det_sing_gen
forms.b_undet_plur_gen = args[7] or forms.b_undet_plur_gen
forms.b_det_plur_gen = args[8] or forms.b_det_plur_gen
forms.n_undet_sing_nom = args[9] or forms.n_undet_sing_nom
forms.n_det_sing_nom = args[10] or forms.n_det_sing_nom
forms.n_undet_plur_nom = args[11] or forms.n_undet_plur_nom
forms.n_det_plur_nom = args[12] or forms.n_det_plur_nom
forms.r_undet_sing_nom = args[13] or forms.r_undet_sing_nom
forms.r_det_sing_nom = args[14] or forms.r_det_sing_nom
forms.r_undet_plur_nom = args[15] or forms.r_undet_plur_nom
forms.r_det_plur_nom = args[16] or forms.r_det_plur_nom
forms.r_undet_sing_gen = args[17] or forms.r_undet_sing_gen
forms.r_det_sing_gen = args[18] or forms.r_det_sing_gen
forms.r_undet_plur_gen = args[19] or forms.r_undet_plur_gen
forms.r_det_plur_gen = args[20] or forms.r_det_plur_gen
if format == "wikitable" or format == "export" then
local not_exists_representation = format == "wikitable" and "-" or nil
local some_condition_is_true = true -- exempel
if some_condition_is_true then -- exempel
forms.form_4 = not_exists_representation -- exempel
end -- exempel
end
return forms
end
function export._getMeta(pagename, templatename, args)
local meta = {}
meta.numbered_cells = 16 -- it depends
meta.named_cells = {}
meta.gender = ""
local default_n_plural_suffix = ""
local default_b_plural_suffix = ""
local default_r_plural_suffix = ""
if templatename == masculine_templatename then
meta.gender = "m"
default_n_plural_suffix = "ar"
default_b_plural_suffix = "er"
default_r_plural_suffix = "er"
elseif templatename == feminine_templatename then
meta.gender = "f"
default_n_plural_suffix = "er"
default_b_plural_suffix = "er"
default_r_plural_suffix = "er"
elseif templatename == neuter_templatename then
meta.gender = "n"
default_n_plural_suffix = "0"
default_b_plural_suffix = "0"
default_r_plural_suffix = "0"
end
meta.n = args[nynorsk_param] ~= "-"
meta.b = args[bokmal_param] ~= "-"
meta.r = args[riksmal_param] ~= "-"
meta.n_plural_suffix = meta.n and args[nynorsk_param] ~= "" and args[nynorsk_param] or default_n_plural_suffix
meta.b_plural_suffix = meta.b and args[bokmal_param] ~= "" and args[bokmal_param] or default_b_plural_suffix
meta.r_plural_suffix = meta.r and args[riksmal_param] ~= "" and args[riksmal_param] or default_r_plural_suffix
return meta;
end
function export._getWikitable(forms, meta)
local number_of_columns = 6
local contains_a_quality_notice = not not meta.quality_notice
local note = meta.note
local as_first_part = meta.as_first_part
local bokmal_lang_tag = lang_tags[bokmal_param]
local nynorsk_lang_tag = lang_tags[nynorsk_param]
local riksmal_lang_tag = lang_tags[riksmal_param]
local case_cell_nom = {'!', "Nominativ"}
local case_cell_gen = {'!', "Genitiv"}
gt.setLanguage("no")
local str = ""
.. gt.getStart(number_of_columns, lang_code_param, part_of_speech_param, contains_a_quality_notice)
.. gt.getRow({'!class="main min" rowspan="2" colspan="2"', 'Bøyninger av ' .. meta.pagename .. ' ' .. meta.meanings}, {'!colspan="2"', 'Entall'}, {'!colspan="2"', 'Flertall'})
.. gt.getRow({'!', 'Ubestemt'}, {'!', 'Bestemt'},{'!', 'Ubestemt'}, {'!', 'Bestemt'})
if meta.b then
local lang_rowspan = 2
local lang_tag_cell = {'!rowspan="' .. lang_rowspan .. '" class="main min"', bokmal_lang_tag}
--mw.log("<" .. forms.b_det_plur_gen .. ">")
str = str
.. gt.getRow(lang_tag_cell, case_cell_nom, forms.b_undet_sing_nom, forms.b_det_sing_nom, forms.b_undet_plur_nom, forms.b_det_plur_nom)
.. gt.getRow( case_cell_gen, forms.b_undet_sing_gen, forms.b_det_sing_gen, forms.b_undet_plur_gen, forms.b_det_plur_gen)
end
if meta.n then
local lang_rowspan = 1
local lang_tag_cell = {'!rowspan="' .. lang_rowspan .. '" class="main min"', nynorsk_lang_tag}
str = str
.. gt.getRow(lang_tag_cell, case_cell_nom, forms.n_undet_sing_nom, forms.n_det_sing_nom, forms.n_undet_plur_nom, forms.n_det_plur_nom)
end
if meta.r then
local lang_rowspan = 2
local lang_tag_cell = {'!rowspan="' .. lang_rowspan .. '" class="main min"', riksmal_lang_tag}
--str = str
--.. gt.getRow(lang_tag_cell, case_cell_nom, forms.r_undet_sing_nom, forms.r_det_sing_nom, forms.r_undet_plur_nom, forms.r_det_plur_nom)
--.. gt.getRow( case_cell_gen, forms.r_undet_sing_gen, forms.r_det_sing_gen, forms.r_undet_plur_gen, forms.r_det_plur_gen)
end
str = str .. gt.getEnd(number_of_columns, note, as_first_part)
return str
end
function export._getCategories(form_sets, meta)
local str = ""
return str
end
return export