Ce module regroupe les fonctions pour afficher les infoboites de flexion en suédois.
{{sv-nom}}
{{sv-nom-c-ind}}
{{sv-nom-n-ind}}
{{sv-nom-n-0}}
{{sv-nom-c-r}}
{{sv-nom-n-n}}
{{sv-nom-c-or}}
{{sv-nom-c-er}}
{{sv-nom-c-ar}}
{{sv-nom-n-er}}
La documentation de ce module est générée par le modèle {{Documentation module}}.
Elle est incluse depuis la page Module:sv-flexion/Documentation. Veuillez placer les catégories sur cette page-là.
Les éditeurs peuvent travailler dans le bac à sable (créer).
Voir les statistiques d'appel depuis le wikicode sur l'outil wstat et les appels depuis d'autres modules.
--========================================================================================
-- Module:sv-flexion : génération des tableaux de flexions des mots en suédois
------------------------------------------------------------------------------------------
-- auteurs principaux : Surkål
-- licence : CC-BY-SA 3.0
--========================================================================================
local p={}
local bases = require('Module:bases')
------------------------------------------------------
-- retourne le mot moins la dernière lettre
function remove_last_letter(TitrePage)
return mw.ustring.sub(TitrePage, 0, -2)
end
------------------------------------------------------
-- fonction qui retourne la dernière lettre d'une chaîne de caractères
function last_letter(chaine)
return mw.ustring.sub(chaine, -1, -1)
end
------------------------------------------------------
function make_inflection(args, param, radic, term)
if args then
return args
else
return radic..term
end
end
------------------------------------------------------
-- retourne la racine, amputée de la lettre "e" à la dernière
-- ou avant-dernière position
function form_e_root(racine)
if last_letter(racine) == "e" then
return remove_last_letter(racine)
end
return mw.ustring.sub(racine, 0, -3)..last_letter(racine)
end
------------------------------------------------------
-- vérifie les racines en fonction des paramètres
function make_roots(args, Radic, TitrePage)
local RadicPl = ""
if (args or args or args) then
Radic = args or args or args
end
if (args or args or args) then
RadicPl = args or args or args
else
if args then
RadicPl = TitrePage
else
RadicPl = Radic
end
end
return Radic, RadicPl
end
-- détermine le genre du mot en fonction du paramètre "g" (ou "genre")
function get_gender(args)
local g = args or args
if not g then return "Genre inconnu" end -- peut éviter quelques boucles inutiles
local genre = { = "Commun", = "Neutre", = "Masculin", = "Féminin"}
if genre then return genre else return "Genre inconnu" end
end
------------------------------------------------------
-- tableau de flexions générique à 2 formes (habituellement les noms indénombrables)
function tableau_generique_2(prm)
-- génération tableau
local txt = '{| class="flextable flextable-sv"\n'..
'! class="invisible" |\n'..
'|-\n'..
'! '..prm.genre..'\n'..
'! Indéfini\n'..
'! Défini\n'..
'|-\n'..
'! Indénombrable\n'..
'| class="sing-indef" |' .. bases.lien_modele(prm.SI, 'sv') .. '\n'..
'| class="sing-def" |' .. bases.lien_modele(prm.SD, 'sv') .. '\n'..
'|}'
if bases.page_principale() then
if not bases.page_existe(prm.SI) then
txt = txt .. ']'
end
if not bases.page_existe(prm.SD) then
txt = txt .. ']'
end
end
return txt
end
------------------------------------------------------
-- tableau de flexions générique à 4 formes
function tableau_generique_4(prm)
-- génération tableau
local txt = '{| class="flextable flextable-sv"\n'..
'! class="invisible" |\n'..
'|-\n'..
'! '..prm.genre..'\n'..
'! Indéfini\n'..
'! Défini\n'..
'|-\n'..
'! Singulier\n'..
'| class="sing-indef" |' .. bases.lien_modele(prm.SI, 'sv') .. '\n'..
'| class="sing-def" |' .. bases.lien_modele(prm.SD, 'sv') .. '\n'..
'|-\n'..
'! Pluriel\n'..
'| class="plur-indef" |' .. bases.lien_modele(prm.PI, 'sv') .. '\n'..
'| class="plur-def" |' .. bases.lien_modele(prm.PD, 'sv') .. '\n'..
'|}'
if bases.page_principale() then
if not bases.page_existe(prm.SI) then
txt = txt .. ']'
end
if not bases.page_existe(prm.SD) then
txt = txt .. ']'
end
if not bases.page_existe(prm.PI) then
txt = txt .. ']'
end
if not bases.page_existe(prm.PD) then
txt = txt .. ']'
end
end
return txt
end
--=======================================================================================
function p.boite_an_or_orna(frame) -- pour Modèle:sv-nom-c-or
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- détection du radical
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = ""
local RadicPl = ""
local term = "n"
if last_letter(TitrePage) == "a" then
Radic = remove_last_letter(TitrePage)
term = "an"
else
Radic = TitrePage
end
if args then
term = "en"
end
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Commun"
params.SI = TitrePage
params.SD = make_inflection(args, "2", Radic, term)
params.PI = make_inflection(args, "3", RadicPl, "or")
params.PD = make_inflection(args, "4", RadicPl, "orna")
-- génération du tableau
if args then return tableau_generique_2(params) end
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_en_er_erna(frame) -- pour Modèle:sv-nom-c-er
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- s'il existe un paramètre "e", enlève la lettre "e" en dernière ou avant-dernière position
if args then Radic = form_e_root(TitrePage) end
-- s'il existe un paramètre "dern", ajoute à la racine la dernière lettre du mot
if args then
Radic = TitrePage..last_letter(TitrePage)
end
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Commun"
params.SI = TitrePage
if args then
params.SD = make_inflection(args, "2", Radic, "n")
params.PI = make_inflection(args, "3", RadicPl, "")
params.PD = make_inflection(args, "4", RadicPl, "na")
else
if args then
params.SD = make_inflection(args, "2", Radic, "n")
else
params.SD = make_inflection(args, "2", Radic, "en")
end
params.PI = make_inflection(args, "3", RadicPl, "er")
params.PD = make_inflection(args, "4", RadicPl, "erna")
end
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_en_ar_arna(frame) -- pour Modèle:sv-nom-c-ar
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- s'il existe un paramètre "e", former le radical en enlevant la dernière lettre
if args then
Radic = remove_last_letter(TitrePage)
end
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Commun"
params.SI = TitrePage
if (args or args or args) then
params.SD = make_inflection(args, "2", Radic, "n")
if args then
RadicPl = mw.ustring.sub(TitrePage, 0, -3)..last_letter(TitrePage)
end
params.PI = make_inflection(args, "3", RadicPl, "ar")
params.PD = make_inflection(args, "4", RadicPl, "arna")
elseif args then
params.SD = make_inflection(args, "2", Radic, "n")
params.PI = make_inflection(args, "3", RadicPl, "")
params.PD = make_inflection(args, "4", remove_last_letter(RadicPl), "na")
else
params.SD = make_inflection(args, "2", Radic, "en")
params.PI = make_inflection(args, "3", RadicPl, "ar")
params.PD = make_inflection(args, "4", RadicPl, "arna")
end
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_en(frame) -- pour Modèle:sv-nom-c-ind
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = (args or TitrePage)
-- construction de la structure de paramètres pour tableau_generique_2
local params = {}
params.genre = "Commun"
params.SI = TitrePage
if (args or args or args) then
params.SD = make_inflection(args, "2", Radic, "n")
else
params.SD = args or make_inflection(args, "2", Radic, "en")
end
-- génération du tableau
return tableau_generique_2(params)
end
--=======================================================================================
function p.boite_et(frame) -- pour Modèle:sv-nom-n-ind
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = (args or TitrePage)
-- s'il existe un paramètre "m", ajoute la lettre "m" au radical
if args then Radic = Radic.."m" end
-- s'il existe un paramètre "e", enlève la lettre "e" en dernière ou avant-dernière position
if args then Radic = form_e_root(TitrePage) end
-- s'il existe un paramètre "um", on retire les 2 dernières lettre du radical"
if args then Radic = mw.ustring.sub(Radic, 0, -3) end
-- construction de la structure de paramètres pour tableau_generique_2
local params = {}
params.genre = "Neutre"
params.SI = TitrePage
params.SD = args or make_inflection(args, "2", Radic, "et")
-- génération du tableau
return tableau_generique_2(params)
end
--=======================================================================================
function p.boite_et_er_erna(frame) -- pour Modèle:sv-nom-n-er
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- s'il existe un paramètre "um", on retire les 2 dernières lettre du radical"
if args then Radic = mw.ustring.sub(Radic, 0, -3) end
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Neutre"
params.SI = TitrePage
params.SD = make_inflection(args, "2", Radic, "et")
params.PI = make_inflection(args, "3", RadicPl, "er")
params.PD = make_inflection(args, "4", RadicPl, "erna")
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_et_en(frame) -- pour Modèle:sv-nom-n-0
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- paramètre "raj" ou "rajoute" pour ajouter une ou plusieurs lettres au radical
if (args or args) then
Radic = Radic..(args or args)
end
-- s'il existe un paramètre "e", enlève la lettre "e" en dernière ou avant-dernière position
if args then Radic = form_e_root(TitrePage) end
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Neutre"
params.SI = TitrePage
params.SD = make_inflection(args, "2", Radic, "et")
params.PI = args or TitrePage
params.PD = make_inflection(args, "4", RadicPl, "en")
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_et_en_ena(frame) -- pour Modèle:sv-nom-n-n
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Neutre"
params.SI = TitrePage
-- en présence du paramètre "raj" on ajoute la lettre "e" au radical
local term = ""
if (args or args or args) then term = "e" end
params.SD = make_inflection(args, "2", Radic..term, "t")
params.PI = make_inflection(args, "3", RadicPl..term, "n")
params.PD = make_inflection(args, "4", RadicPl..term, "na")
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_n_r_rna(frame) -- pour Modèle:sv-nom-c-r
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
local Radic = TitrePage
-- vérifie la présence d'indications sur les racines
Radic, RadicPl = make_roots(args, Radic, TitrePage)
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = "Commun"
params.SI = TitrePage
params.SD = make_inflection(args, "2", Radic, "n")
params.PI = make_inflection(args, "3", RadicPl, "r")
params.PD = make_inflection(args, "4", RadicPl, "rna")
-- génération du tableau
return tableau_generique_4(params)
end
--=======================================================================================
function p.boite_nom(frame) -- pour Modèle:sv-nom
--=======================================================================================
-- pour les paramètres, voir la documentation du modèle
-- utilise les paramètres frame:getParent() et donc ne peut être appelé que depuis un modèle
-- récupération des paramètres passés au modèle
local args = frame:getParent().args
-- s'il existe un paramètre "mot", le prendre en priorité (utile pour les pages doc)
local TitrePage = args or args or mw.title.getCurrentTitle().text
-- construction de la structure de paramètres pour tableau_generique_4
local params = {}
params.genre = get_gender(args)
params.SI = TitrePage
params.SD = make_inflection(args, "1", TitrePage, "")
params.PI = make_inflection(args, "2", TitrePage, "")
params.PD = make_inflection(args, "3", TitrePage, "")
-- génération du tableau
return tableau_generique_4(params)
end
return p