Module:sv-flexion

Bonjour, vous êtes venu ici pour chercher la signification du mot Module:sv-flexion. Dans DICTIOUS, vous trouverez non seulement toutes les significations du dictionnaire pour le mot Module:sv-flexion, mais vous apprendrez également son étymologie, ses caractéristiques et comment dire Module:sv-flexion au singulier et au pluriel. Tout ce que vous devez savoir sur le mot Module:sv-flexion est ici. La définition du mot Module:sv-flexion vous aidera à être plus précis et correct lorsque vous parlerez ou écrirez vos textes. Connaître la définition deModule:sv-flexion, ainsi que celles d'autres mots, enrichit votre vocabulaire et vous fournit des ressources linguistiques plus nombreuses et de meilleure qualité.

 Documentation

Ce module regroupe les fonctions pour afficher les infoboites de flexion en suédois.

Fonctions activées sur les modèles

--========================================================================================
-- 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="wikitable 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="wikitable 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