Module:cas

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

 Documentation

Ce module crée les modèles de n’importe quel cas grammatical.

Importation dans un module : c = require("Module:cas")

Usage du modèle {{cas}} :

cas(nom_du_cas)
créer le modèle correspondant au cas renseigné, selon la liste définie dans Module:cas/data.

Les catégories de maintenance sont réunies dans Catégorie:Maintenance des modèles de cas.


b = require('Module:bases')
lang = require('Module:langues')

local p = {}

-- Regroupe les catégories ensemble
categories = {}

-- Activer pour voir les catégories générées (seulement pour déboguer avec l’aperçu : désactiver en sauvegardant)
-------------------------------
local isdebug = false
-------------------------------

-- Cherche et renvoie le cas depuis notre liste locale ].
-- Fonction utilisable dans d’autres modules
function get_cas(nom)
    -- Pas de cas ? Renvoie nil.
    if (nom == nil) then return nil end
    
    -- Espaces avant et après enlevés
     nom = mw.text.trim(nom)
    
    -- Récupère la table des cas entière (en cache)
    local cas = mw.loadData('Module:cas/data')
    
    -- A-t-on le cas correspondant au nom donné ?
    if (cas and cas) then
        -- Trouvé ! Renvoie le cas
        return cas
    else
        -- Pas trouvé : on renvoie nil
        return nil
    end
end

-- Renvoie simplement le nom du cas donné en entrée.
function _page_cas(cas, nom_cas, minuscule)
	local nom_affiche = ''
	if minuscule == nil or mw.text.trim(minuscule) == '' then
		nom_affiche = b.ucfirst(cas)
	else
		nom_affiche = cas
	end
	
    local texte_nom = ']'
 
    return texte_nom
end

-- Récupération du nom du cas et création du texte affiché (avec lien)
function _fait_titre_cas(nom_cas, code_langue, minuscule, nocat)
 
    -- Pas de nom de cas donné ? À corriger !
    if (nom_cas == nil or mw.text.trim(nom_cas) == '') then
        local textet = {"]"}
        table.insert(textet, b.fait_categorie_contenu("Wiktionnaire:Modèles de cas sans nom précisé"))
        return table.concat(textet)
    end
 
    nom_cas = mw.text.trim(nom_cas)
 
    -- Récupération du nom du cas
    local cas = get_cas(nom_cas)
 
    -- Création du titre à partir du nom de la langue
    local textet_titre = {}
    if cas ~= nil then
        texte_cas = _page_cas(cas, nom_cas, minuscule)
        table.insert(textet_titre, texte_cas)
 
        -- Catégorie
        if (nocat == nil or mw.text.trim(nocat) == '') then
        	_fait_categorie(code_langue, cas)
        end
 
    -- Si le code langue ne correspond à aucune langue définie
    else
        table.insert(textet_titre, b.ucfirst(nom_cas))
       	table.insert(textet_titre, "]")
        table.insert(textet_titre, b.fait_categorie_contenu('Wiktionnaire:Modèles de cas avec cas inconnu'))
    end
    
    local texte_categories = table.concat(categories)
	local texte_final = '<span>' .. table.concat(textet_titre) .. '</span>'
    return texte_final .. texte_categories
end

function _ajoute_categorie(nom_cat, clef, ecrit)
	local texte_categorie = ''
	-- Debug : affiche tout
    if isdebug then
    	if clef then
        	texte_categorie = b.fait_categorie(nom_cat, nil, true) .. '(' .. clef .. ')'
        else
        	texte_categorie = b.fait_categorie(nom_cat, nil, true)
        end
    -- Utilisation réelle : crée une vraie catégorie
    else
    	texte_categorie = b.fait_categorie_contenu(nom_cat, clef, ecrit)
    end
    table.insert(categories, texte_categorie)
end

function _termine_par_s(nom_cas)
	if(string.sub(nom_cas,-1) == 's') then
		return true
	end
	return false
end

-- Crée la catégorie correspondant au cas grammatical donné
function _fait_categorie(code_lang, cas)
    -- Pas de catégorie si pas espace principal
    if not b.page_de_contenu then return '' end
    
    -- Nom de la langue
    local langue = lang.getName(code_lang)
    
    local nom_cas = ''
    if _termine_par_s(cas) then
    	nom_cas = cas
	else
		nom_cas = cas .. 's'
	end
    
    -- Catégorie Cas "nom du cas" en "langue"
    if cas and langue then
    	local nom_categorie = ''
		nom_categorie = 'Cas ' .. nom_cas .. ' en ' .. langue

        _ajoute_categorie(nom_categorie)
    else
    	-- Langue incorrecte : pas de catégorie
        if cas then
        	if code_lang ~= nil and code_lang ~= '' then
        		-- Code donné : n’est pas défini dans la liste
        		_ajoute_categorie('Wiktionnaire:Cas avec langue inconnue', cas)
        	else
        		-- Pas de code langue donné du tout
        		_ajoute_categorie('Wiktionnaire:Cas sans langue précisée', cas)
        	end
        end
    end
end

function p.modele_cas(frame)
    -- Récupération des variables nécessaires à la création du modèle
    local args = frame:getParent().args
    
    return p.modele_cas_args(args)
end
    
function p.modele_cas_args(args)
    local argsnum = b.trim_parametres(args)
    local nom_cas   = argsnum        -- Le type de mot (nom standard ou alias)
    local code_lang = argsnum        -- Code langue
    local minuscule = args -- Minuscule (pour afficher le cas tout en minuscule)
    local nocat = args     -- Aucune catégorisation
	
    return _fait_titre_cas(nom_cas, code_lang, minuscule, nocat)
end

-- Fonction pouvant remplacer les appels de type {{ {{{cas}}} }} dans les modèles
-- Cette fonction marche pour un modèle
function p.nom_cas(frame)
    local args
    if frame.args ~= nil and frame.args ~= nil then
        args = frame.args
    else
        args = frame:getParent().args
    end
    local nom_cas = args
    
    local cas = p.get_cas(nom_cas)
    
    if (cas == nil or cas == '') then
        return ''
    else
        return cas
    end
end

return p