Module:Ref
La documentation pour ce module peut être créée à Module:Ref/doc
-- Au 18/11/2021 sur la base de Ref expurgé, (plus de clé automatique) ajout de paramètre trace qui affiche le HTML
-- Au 02/05/2018. Ce module Ref fabrique les balises de renvoi en bas de page
-- <ref name="xxxx" group="yyyy">aaaa</ref> et rappel
-- <ref name="xxxx" group="yyyy"/>
--(à la place du tag:ref du parseur initialement mis en place puis de son ancien appel en redirection)
local p = {}
--
local function _xist(objet) --Cette fonction transforme localement un objet composite "qui n'existe pas" nil & '' (taille 0) en valeur false d'objet pour Ref testable sans passer par pcall
if (tostring(objet) ~= nil and #tostring(objet) > 0 ) then return objet else return false end
end --fin _xist
--
local function _coulerr (objet) -- rouge
local objet ='<span style="color:#d00000;">' .. objet .. '</span>'
return objet
end --fin _coulerr
--
local function _trx (reftext, module_args)--Cette fonction fabrique la trace conditionnée par l'argument trace=oui
if _xist (module_args["trace"])
then -- tracage
trax = '<span style="color:#F08000;">'..reftext..' Rappel: ne pas mettre de = dans le code de paramètres positionnels. Utilisez {{=}} si besoin.'..'</span>'
else -- pas trace
trax = ''
end
return trax
end --fin _trx
--
local function _mef_balRef (module_args, nb_erreurs) -- Cette fonction met en forme les balises ref name group - /ref pour le preparseur
local clefauto = '°°0'
local renvoi = 'rien'
local affiche = 'rien à afficher'
-- éliminer les paramètres nommés
-- OK pas de nommés, décoder les positionnels
if _xist(module_args[2])
then -- un group
if _xist(module_args[3])
then -- un name
if _xist(module_args[1])
then -- un text
--renvoi = 'un group un name un text 1'
renvoi = '<ref group="'..module_args[2]..'" name="'..module_args[3]..'">'..module_args[1]..'</ref>'
else -- pas text
--renvoi = 'un group un name pas text 2'
renvoi = '<ref group="'..module_args[2]..'" name="'..module_args[3]..'"/>'
end
else -- pas name
if _xist(module_args[1])
then -- un text
--renvoi = 'un group pas name un text 3'
renvoi = '<ref group="'..module_args[2]..'">'..module_args[1]..'</ref>'
else -- pas text
--renvoi = 'un group pas name pas text 4'
renvoi = _coulerr ('ERREUR pas de texte pas de nom (mais un groupe) en paramètres positionnels ou bien un paramètre nommé ou bien un = dans le texte du renvoi. Utilisez {{=}} si besoin.')
nb_erreurs = nb_erreurs + 1
end
end
else -- pas group
if _xist(module_args[3])
then -- un name
if _xist(module_args[1])
then -- un text
--renvoi = 'pas group un name un text 5'
renvoi = '<ref name="'..module_args[3]..'">'..module_args[1]..'</ref>'
else -- pas text
--renvoi = 'pas group un name pas text 6'
renvoi = '<ref name="'..module_args[3]..'"/>'
end
else -- pas name
if _xist(module_args[1])
then -- un text
--renvoi = 'pas group pas name un text 7'
renvoi = '<ref>'..module_args[1]..'</ref>'
else -- pas text
--renvoi = 'pas group pas name pas text 8'
renvoi = _coulerr ('ERREUR pas de texte, pas de nom (et pas de groupe) en paramètres positionnels ou bien un paramètre nommé ou bien un = dans le texte du renvoi. Utilisez {{=}} si besoin.')
nb_erreurs = nb_erreurs + 1
end
end
end
return renvoi
end
--
function _verifsyntax(article_args, nb_erreurs, liste_erreurs) -- détecter les positionnels
if _xist(article_args["texte"] or article_args["text"]) then liste_erreurs=liste_erreurs..'<br>ERREUR argument nommé texte= ou text=;Remplacez ce modèle avec {{Note}}, avec {{Efn}}. Utilisez {{=}} si besoin.'
nb_erreurs = nb_erreurs + 1 end
if _xist(article_args["groupe"] or article_args["group"]) then liste_erreurs=liste_erreurs..'<br>ERREUR argument nommé groupe= ou group=;Remplacez ce modèle avec {{Note}}, avec {{Efn}}. Utilisez {{=}} si besoin.'
nb_erreurs = nb_erreurs + 1 end
if _xist(article_args["nom"] or article_args["name"]) then liste_erreurs= liste_erreurs..'<br>ERREUR argument nommé nom= ou name=;Remplacez ce modèle avec {{Note}}, avec {{Efn}}. Utilisez {{=}} si besoin.'
nb_erreurs = nb_erreurs + 1 end
return nb_erreurs, liste_erreurs
end
--
-- Cette fonction est accès p.Ref_
--
function p.Ref_ (frame) --Cette fonction fabrique un renvoi en bas de page
-- (les définitions des zones de travail à portée p sont sous p{} )
-- en fait ce qui suit est la définition des variables pour toutes fonctions
local objet = '' --pour fonctions
local pbjet = ''
-- modele_args
local modele_args = frame.args
-- article_args
local article_args = frame:getParent().args
--
local clef = '°°0' --clé automatique inutilisée
--
local nom = '' -- mettre les args article d'abord
local groupe = '' -- mettre les args article d'abord
local reftext = '' -- le texte
local trax = '' -- la trace
local cat_erreurs = ''
local liste_erreurs = ''
local nb_erreurs = 0
-- détecter les positionnels
nb_erreurs, liste_erreurs = _verifsyntax(article_args, nb_erreurs, liste_erreurs)
-- préparer l'HTML
reftext = _mef_balRef(modele_args, nb_erreurs)
-- trace éventuelle - pour doc avec trace
trax = _trx(reftext, modele_args)
-- erreurs éventuelles
if (nb_erreurs > 0) then
if _xist(modele_args['__Cat']) then cat_erreurs = modele_args['__Cat'] end
liste_erreurs = "[["..cat_erreurs.."]]".._coulerr("<br> nb erreurs: "..nb_erreurs..liste_erreurs.."<br>")
renvoi = trax..liste_erreurs
else
-- le corps du rendu
renvoi = trax..frame:preprocess(reftext)
end
return renvoi
end --fin Ref_
return p