Module:lac-flexion

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

 Documentation[voir] [modifier] [historique] [purger]

Ce module regroupe les fonctions pour afficher les infoboites de flexion en lacandon.


--========================================================================================
-- Module:lac-flexion
-- (fr) génération des tableaux de flexions des mots en lacandon
-- (en) module building inflexion tables for Lacandon
------------------------------------------------------------------------------------------
-- basé sur le module it-flexion
-- licence / license : CC-BY-SA 3.0
--========================================================================================

local bases = require('Module:bases')
local exports = {}

------------------------------------------------------

-- lien vers une page en lacandon
function lien_lac(page)
	--return '[['..page..'#lac|'..page..']]'
	return bases.lien_modele(page, 'lac')
end

-- catégorie pluriel manquant
function pluriel_manquant(mot, page)
	if mot and mot ~= '' and mot ~= page and (not bases.page_existe(mot)) then
		return '[[Catégorie:Pluriels manquants en lacandon]]'
	end

	return ''
end

------------------------------------------------------
-- tableau de flexions générique à 2 formes (habituellement singulier/pluriel)
-- prm.titre : titre du tableau
-- prm.s     : forme au singulier
-- prm.p     : forme au pluriel
-- prm.page  : nom de la page (doit être le singulier ou le pluriel)
function tableau_simple_2(prm)
    -- génération tableau
    local txt = '{| class="flextable"\n'
    
    if prm.titre then
    	txt = txt..'|+'..prm.titre..'\n'
    end

    txt = txt..
        '|-\n'..
        '!scope="col"| Singulier\n'..
        '!scope="col"| Pluriel\n'..
        '|-\n'..
        '|'..lien_lac(prm.s)..'\n'..
        '|'..lien_lac(prm.p)..'\n'..
        '|-\n'..
        '|}'

	-- catégorie pluriels manquants
	txt = txt .. pluriel_manquant(prm.p, prm.page)

    return txt
end

------------------------------------------------------


------------------------------------------------------------------------
function exports.boite_sp(frame) -- pour Modèle:lac-flexion
------------------------------------------------------------------------
    -- récupération des paramètres passés au modèle
    local args = frame:getParent().args
    local page_particuliere = args['mot']
	local flexion = args['f']
    local singulier = args['s']
    local pluriel = args['p']

    
    -- chaîne vide si les paramètres n'existent pas
    if flexion == nil then
    	flexion = ''
    end


    -- construction de la structure de paramètres pour les tableaux
    local params = {}
    params.titre = args['titre']
    params.flexion = flexion
    params.s = ''
    params.p = ''
    -- récupération du nom de la page
    local page = mw.title.getCurrentTitle().text
    params.page = page

    local mot = page
    -- prise en charge du singulier ou du pluriel non régulier
    local mot_p = mot
    if singulier then
    	mot = singulier
    end
    if pluriel then
    	mot_p = pluriel
    end


	-- cas simple où singulier(s) et pluriel(s) sont spécifiés sans flexion
	if (singulier or pluriel) and (flexion == '') then
			params.s = mot
			params.p = mot_p

			-- tableau 2
			return tableau_simple_2(params)
	end


	-- construction du tableau

    -- deux dernières lettres de la page
    local len_page = mw.ustring.len(page)
    local deux_dernieres_lettres = mw.ustring.sub(page, len_page - 1, len_page)

    if flexion == 'ob' then
    	-- pluriel avec suffixe ob

		if deux_dernieres_lettres == 'ob' then
			-- mot sans le suffixe 'ob'
			local prefixe = mw.ustring.sub(page, 1, len_page - 2)
			params.s = prefixe
			params.p = mot
		else
			-- rajout du suffixe 'ob' pour le pluriel
			params.s = mot
			params.p = mot..'ob'
		end

    	return tableau_simple_2(params)
    end

	-- erreur
	if flexion ~= '' and page ~= 'Module:lac-flexion' and page ~= 'Modèle:lac-flexion' then
		return '<strong class="error">Flexion: "'..flexion..'" non reconnue</strong>'
	end
end


-- publication des fonctions publiques
return exports