Module:Harvapbrouillon
Apparence
La documentation de ce module est générée par le modèle {{Documentation module}}.
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.
-- brouillon
-- brouillon personnel analyse et prog
-- brouillon
-- ébauche de 'module:nom_module/Documentation'
-- présentation générale
--
-- on part de la base : la méthode harvard est un accès, le sous-produit de l'écriture dans l'article de l'ouvrage sourçant
-- but:
-- >obtention d'une génération de la référence à partir du traitement automatique en wikicode d'un duplicata de l'ouvrage
-- >obtention d'une génération manuelle guidée modification-code respectant les normes établies par consensus
-- >obtention du résultat comme avec la modification-écran : aucune erreur de transcription technique ni de bugs
-- avec pour objectifs:
-- ¤rassemble les possibilités de note((harvsp) citations brèves référencées) rappels courts
-- ¤respect de l'automatisme de sfn pour constituer des sous-groupes dans les groupes déclarés par duplicata à contenu modifié
-- ¤rassemble la possibilité de sfnp de mettre la date entre (), ajout de la formulation Av JC
-- les paramètres du module respectent la convention d'affichage de {{m|sfn}} ( et pas celle de stockage et affichage de {{m|ouvrage}} )
-- pour éviter les bugs, 'trim' aussi des positionnels (pas plus de 5 positionnels autorisés)
-- la syntaxe est 4 noms -sans prénoms- (diff. nom1-prénom1 pour duplicata ouvrage si 'génération')
-- (diff. sur commentaire, alias, citation ...)
-- auteur1.."/"
-- "1" positionnel (espaces avant-arrière enlevés)
-- auteur2.."/"
-- "2" positionnel (espaces avant-arrière enlevés)
-- auteur3.."/"
-- "3" positionnel (espaces avant-arrière enlevés)
-- auteur4.."/"
-- "4" positionnel (espaces avant-arrière enlevés)
-- date.."/"
-- 5, 4, 3, 2 ;dernier positionnel (espaces avant-arrière enlevés, forme JJ_MM_AAAA, AAAA défaut, voir 'dpar' )
-- p.."/" --> (voir doc sfn)
-- loc.."/" --> (voir doc sfn)
-- ps.."/" --> autorise l'indirection par création d'une ref quand nécessaire et forme classique (voir doc sfn)
-- id.."/" --> ne tolère pas les positionnels, obligation de 'texte'
-- texte.."/" --> utilisable pour se substituer à n'importe quel automatisme pour formuler le lien clicable
-- gr.."/" --> (voir doc sfn)
-- name.."/" --> les valeurs qui suivent autorisent les mêmes possibilités que <ref>, {{m|note}} :
-- ":<nom-manuel>" --> autorise les citations pas brèves respecte la formulation classique
-- "auto" --> par défaut si pas de name
-- Tdpar --> utilise la formulation nombre négatif pour préfixe
-- "()" --> date dernier positionnel entre parenthèses façon {{m|sfnp}}
-- "(Av JC)" -->
-- "Av JC" -->
-- aliases pour l'analyseur
--
--
-- brouillon
-- brouillon
-- brouillon
local p = {}
--
--
local function _coulerr (objet) -- rouge
local objet ='<span style="color:#d00000;">' .. objet .. '</span>'
return objet
end --fin _coulerr
--
local function _coulok (objet) -- vert
local objet ='<span style="color:#00A030;">' .. objet .. '</span>'
return objet
end --fin _coulok
--
local function _Xist(objet) --> transforme localement un objet "qui n'existe pas" nil & '' (taille 0) en valeur " "
if (tostring(objet) ~= nil and #tostring(objet) > 0 ) then return objet else return " " end
end --fin _xist
--
-- élaboration du clicbleu test de la date
--
local function _clicbleu (texteaf, toggle, p1val, p2val, p3val, p4val, p5val) -- ébauche de fonction appelée
local nb_erreurs = 0 -- au brouillon dates à tester si ce sont des nombres
local toggle = toggle --mesparams sont transmis depuis l'appel
if (texteaf ~= "") then texteaf = texteaf
else
if (toggle == "5") then
if (type(p5val) ~= 'number') then nb_erreurs = nb_erreurs + 1 else
texteaf = p1val.." ''& al.'' "..p5val
end
end
if (toggle == "4") then
if (type(p4val) ~= 'number') then nb_erreurs = nb_erreurs + 1 else
texteaf = p1val.." "..p2val.." ".." "..p3val.." et ".." "..p4val
end
end
if (toggle == "3") then
if (type(p3val) ~= 'number') then nb_erreurs = nb_erreurs + 1 else
texteaf = p1val.." et "..p2val.." "..p3val
end
end
if (toggle == "2") then
if (type(p2val) ~= 'number') then nb_erreurs = nb_erreurs + 1 else
texteaf = p1val.." "..p2val
end
end
end
return texteaf, nb_erreurs
end --fin _clicbleu
local function _syntax (mesparams,nb_erreurs,liste_erreurs, liste_opt) -- les positionnels sont abrégés des espaces avant et arrière
local switch = "xcute"
if (switch == "stdby") then
local renvoi = ""
local trim = ""
local liste_erreurs = ""
-- récupérer d'abord iden et texte pour l'ancre Harvard
local liste_par_nom = ""
local liste_optaf = ""
local clicbleu = ""
-- local iden = ""
-- local texteaf = ""
for ind, parval in pairs(mesparams.args) do --tous les params positionnels et nommés
if (type(ind) ~= 'number') then -- que les nommés
liste_par_nom = liste_par_nom.."{{,}}"..ind.."="..parval--liste indicative envoyée à la fin
-- test nom paramètres nommés
if not ((ind == "texte")
or (ind == "id")
or (ind == "p") or (ind == "pp")
or (ind == "loc")
or (ind == "ps")
or (ind == "gr") or (ind == "group") or (ind == "groupe")
or (ind == "dpar"))
then
-- sous else
-- repporter ici le chargement des nommés
-- repporter ici le chargement des nommés
-- repporter ici le chargement des nommés
--ok brouillon rien chargé
-- else --aucun
nb_erreurs = nb_erreurs + 1
liste_erreurs = liste_erreurs .."<br>;paramètre ".." ; "..ind.." : mal nommé "
end
end
end
--
-- https://fr.wikipedia.org/w/index.php?title=Module:Bac_%C3%A0_sable&diff=prev&oldid=213169114
local toggle = 0
local p1val = ""
local p2val = ""
local p3val = ""
local p4val = ""
local p5val = ""
-- local idx, parmval --supprimer les déclarations d'indice index
for idx, parmval in ipairs(mesparams.args) do --paramètres non nommés
toggle = toggle + 1
-- if toggle == 1 then p1val = parmval end
-- if toggle == 2 then p2val = parmval end
-- if toggle == 3 then p3val = parmval end
-- if toggle == 4 then p4val = parmval end
-- if toggle == 5 then p5val = parmval end
--
trim = mw.text.trim(parmval)
-- if (#trim ~= #parmval) then
-- nb_erreurs = nb_erreurs + 1
-- liste_erreurs = liste_erreurs .."<br>;paramètre "..idx.." prenant la valeur '"..parmval.."' : espace(s) avant arrière du paramètre"
-- else
clicbleu = clicbleu..parmval
-- end
end -- fin xtraction positionnels
if (toggle > 5) then
nb_erreurs = nb_erreurs + 1
--KO parmval null liste_erreurs = liste_erreurs .."<br>;paramètre "..idx.." prenant la valeur '"..parmval.."' : paramètre en trop"
end
-- brouillon clicbleu = p1val..p2val..p3val..p4val..p5val.." valeur du toggle :"..toggle --Brouillon
--en attendant suivant toggle _clicbleu mis en forme
--
--
--constitution de référence affichée en détail
--
local paf = ""
local locaf = ""
local psaf = ""
local texteaf = ""
local iden = ""
local graf = ""
for ind, parval in pairs(mesparams.args) do --tous les params
if (type(ind) ~= 'number') then
-- constitution liste_opt
if (ind == "p") or (ind == "pp" ) then paf = ", p. "..parval end
if (ind == "loc") then locaf = ", "..parval end
if (ind == "ps") then psaf = ", « "..parval.." »" end
if (ind == "texte") then texteaf = parval clicbleu=parval end
if (ind == "id") then iden = parval end
if (ind == "gr") or (ind == "group") or (ind == "groupe") then graf = parval end
end
end
if (toggle < 2) and (iden == "") then
nb_erreurs = nb_erreurs + 1
liste_erreurs = liste_erreurs .."<br>;manque paramètres, au moins un auteur+date sinon paramètres id et texte" end
if (iden ~= "" and texteaf == "") then
nb_erreurs = nb_erreurs + 1
liste_erreurs = liste_erreurs .."<br>;paramètre id présent sans paramètre texte"
end
if (iden ~= "" and p1val ~= "") then
nb_erreurs = nb_erreurs + 1
liste_erreurs = liste_erreurs .."<br>;paramètre id présent avec paramètre(s) auteur(s)+date"
end
liste_optaf = locaf..paf..psaf
return nb_erreurs, liste_erreurs, liste_par_nom, liste_optaf, textaf, graf, iden, clicbleu
else
--zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
-- Illustration du passage des paramètres dans les modules Lua
-- utilisation des itérations sur ipairs() et pairs()
local b = {};
function b.imprime_les_parametres( frame )
local args = frame.args
-- Uniquement les paramètres non nommés (ou dont la clé est un indice entier séquentiel)
local resultat = '; Paramètres séquentiels uniquement (entiers de 1 à N, sans aucun trou)\n';
for rang, valeur in ipairs( args ) do
resultat = resultat .. ': args[' .. rang .. '] = "' .. valeur .. '"\n';
end
resultat = resultat .. '; Tous les paramètres (dans un ordre arbitraire)\n';
for clef, valeur in pairs( args ) do
-- Noter que les deux variables `clef` et `valeur` sont locales à chaque boucle
-- `for` qui les déclare implicitement : il est donc inutile de les déclarer avant
-- car elles ne seraient pas utilisées et pas modifiées du tout, et leur valeur
-- est inaccessible à la boucle suivante ou après la fin des boucles.
if type( clef ) == 'number' then
resultat = resultat .. ': args[' .. clef .. '] = "' .. valeur .. '"\n';
else
resultat = resultat .. ': args["' .. clef .. '"] = "' .. valeur .. '"\n';
end
end
resultat = resultat .. '; Tous les paramètres (dans l’ordre numérique sinon lexicographique ASCII des clefs)\n';
-- Forme une séquence contenant seulement les clefs dans un ordre quelconque en les
-- mettant en valeur d'une autre clef, un numéro entier arbitraire mais séquentiel.
local clefs = {}; -- séquence initialement vide
for clef, _ in pairs( args ) do
table.insert( clefs, clef );
end
-- Trie cette séquence.
table.sort( clefs,
function( a, b )
--[[
-- Pour pouvoir comparer les clés de types différents, on peut les convertir toutes
-- en chaînes (sinon se produit l'erreur Lua: attempt to compare string with number).
return tostring(a) < tostring(b);
-- Noter qu'alors une clé comme '+' sera classée lexicographiquement avant la clé 1, et
-- la clé 10 sera classée lexicographiquement avant la clé 2.
--]]
-- On peut aussi décider que lorsque les deux clés sont de types différents,
-- on classe toute clé numérique avant celles d'un autre type
-- if faut juste modifier cette fonction ainsi :
if type(a) ~= type(b) then
return type(a) == 'number';
else
return a < b;
end
-- Noter toutefois que Scribunto transmet tout paramètre dont le nom est numérique
-- mais non entier tel que `{{#invoke|... |1.5=belge}}` sous forme de chaîne, qui
-- sera donc triée ici lexicographiquement (comme clef="1.5" en Lua) et non
-- pas numériquement (comme clef=1.5 en Lua) et la clef donc toujours listée après
-- tous les autres paramètres dont le nom est n'importe quel entier même de valeur
-- supérieur (le paramètre [20]="z" sera donc AVANT ["1.5"]="a").
-- De même un paramètre dont le nom est entier mais inclut des décimales nulles
-- sera transmis sous forme de chaîne.
-- En revanche tout paramètre dont le nom est donné explicitement avec un signe `=`
-- qu'il soit numérique ou pas, entier ou pas, avec des décimales nulles ou pas
-- verra son nom chaine transmis sans aucun blanc au début ou à la fin, les autres
-- blancs étant compressés en un espace unique; si Scribunto ne voit plus que des
-- chiffres décimaux dans ce nom (éventuellement précédé d'un unique signe `-`)
-- et si sa valeur est représentable en Lua sous forme d'un nombre entier Lua,
-- il sera transmis en tant que nombre (qu'il forme une séquence continue ou pas);
-- la valeur de ces paramètres verra ses blancs au début et à la fin aussi éliminés.
end );
-- Utilise les clés maintenant lues depuis la séquence triée
for rang = 1, #clefs do
local clef = clefs[rang];
local valeur = args[clef];
if type( clef ) == 'number' then
resultat = resultat .. ': args[' .. clef .. '] = "' .. valeur .. '"\n';
else
resultat = resultat .. ': args["' .. clef .. '"] = "' .. valeur .. '"\n';
end
end
return resultat;
end
return b;
end
end --fin _syntax
--
-- Cette fonction est accès p.harvap_
--
function p.harvap_ (frame) --Cette fonction fabrique un renvoi en bas de page
--le frame renvoyé 'table' est la récup où il n'y a pas traitement indexé des params du modèle mais des params indiqués dans l'article
--le modèle (Template appelant le module) définit
-- s'il y a sfn défini à la main à l'aide de l'analyseur intégré
-- ou bien (incompatibles)
-- s'il y a génération auto du sfn depuis la copie de l'ouvrage par modif du code
-- (les définitions des zones de travail à portée p sont ici
-- en fait ce qui suit est la définition des variables pour toutes fonctions appelées
-- par leur chargement : x, y = _mafonc(params, x, y)
--switch déconnecte / connecte parties du code de la fonc principale
--tout ce qui commence par un B est une bidouille, est une restriction du cas pas encore développé
---faire le trim
local switch = {"all", "rien", "lereste"} -- un array
local argsTemplate = frame:getParent().args --parms de l'article passés au modèle appelant ce module, pour l'instant auteur-date
local nb_erreurs = 0 -- pour l'analyseur interne
local renvoi = ""
local trax = '' --trax est le dump pour bench
local clicbleu = "auteur-date (défaut)" --brouillon pour test initial
local Bauteur1 = argsTemplate[1]
if (switch[3] == "all") then
renvoi = "essai switch "..switch[1].." "..switch[2]..">>>"
renvoi = renvoi.._Xist(Bauteur1)
if (tostring(Bauteur1) ~= nil and #tostring(Bauteur1) > 0 ) then renvoi=renvoi.. "plein" else renvoi=renvoi.. "inexistant" end
elseif (switch[3]) == "rien" then
renvoi = mw.hash.listAlgorithms()
-- renvoi = mw.hash.hashValue( 'md5', "brouillon brouillon personnel analyse et prog brouillon ébauche de 'module:nom_module/Documentation' présentation générale on part de la base : harvard est un accès sous-produit de l'écriture dans l'article de l'ouvrage sourçant >obtention d'une génération de la référence à partir du traitement automatique en wikicode d'un duplicata de l'ouvrage >obtention d'une génération manuelle guidée modification-code respectant les normes établies par consensus >obtention du résultat comme avec la modification-écran : aucune erreur de transcription technique ni de bugs ¤rassemble les possibilités de note harvsp citations longues référencées rappels courts ¤respect de l'automatisme de sfn pour constituer des sous-groupes dans les groupes déclarés par duplicata à contenu modifié ¤rassemble la possibilité de sfnp de mettre la date entre , ajout de la formulation Av JC les paramètres du module respectent la convention d'affichage de {{m|sfn}} et pas celle de stockage et affichage d {m|ouvrage}} pour éviter les bugs, 'trim' aussi des positionnels pas plus de 5 positionnels autorisés la syntaxe est 4 noms -sans prénoms- diff. nom1-prénom1 pour duplicata ouvrage si 'génération' diff. sur commentaire, alias, citation ... auteur1.. / 1 positionnel espaces avant-arrière enlevés auteur2.. / 2 positionnel espaces avant-arrière enlevés auteur3.. / 3 positionnel espaces avant-arrière enlevés auteur4.. / 4 positionnel espaces avant-arrière enlevés date.. / 5, 4, 3, 2 ;dernier positionnel espaces avant-arrière enlevés, forme JJ_MM_AAAA, AAAA défaut, voir 'dpar' p.. / > voir doc sfn loc.. / > voir doc sfn ps.. / > autorise l'indirection par création d'une ref quand nécessaire et forme classique voir doc sfn id.. / > ne tolère pas les positionnels, obligation de 'texte' texte.. / > utilisable pour se substituer à n'importe quel automatisme pour formuler le lien clicable gr.. / > voir doc sfn name.. / > les valeurs qui suivent autorisent les mêmes possibilités que <ref>, {{m|note}} : :<nom-manuel> > autorise les citations pas brèves respecte la formulation classique auto > par défaut si pas de name compact > optimisation utilise l'algorithme de compacter séparément chaque constituant-clé voir wikicode {{m|sfn2}} de la chaîne-identifiante rassemblée Tdpar > utilise la formulation nombre négatif pour préfixe > date dernier positionnel entre parenthèses façon {{m|sfnp}} Av JC > Av JC > pas d'alias pour simplifier l'analyseur brouillon brouillon brouillon")
else
----
---- A vérifier utilité de ce qui suit
----
local cat_erreurs = "North Park" --récup prov
local Liste_opt = ""
local texteaf = "inutile, initialisation défaut"
local paf = "pas p"
local locaf = "pas loc"
local pasaf = "pas ps"
local texteaf = "pas texte"
local idenaf = "pas iden"
local graf = "pas gr"
local iden = "pas de parms"
---
--- fin A
---
-- nb_erreurs, liste_erreurs, liste_par_nom, liste_optaf, textaf, graf, iden, clicbleu = _syntax (frame, nb_erreurs)
local Tauteur1 = _Xist(argsTemplate[1])
local Tauteur2 = _Xist(argsTemplate[2])
local Tauteur3 = _Xist(argsTemplate[3])
local Tauteur4 = _Xist(argsTemplate[4])
local Tdate = _Xist(argsTemplate[5])
local Tp = _Xist(argsTemplate['p'])
local Tloc = _Xist(argsTemplate['loc'])
local Tps = _Xist(argsTemplate['ps'])
local Tid = _Xist(argsTemplate['id'])
local Ttexte = _Xist(argsTemplate['texte'])
local Tgr = _Xist(argsTemplate['gr'])
local Tdpar = _Xist(argsTemplate['dpar'])
trax =Tauteur1.."/"
.. Tauteur2.."/"
.. Tauteur3.."/"
.. Tauteur4.."/"
.. Tdate.."/"
.. Tp.."/"
.. Tloc.."/"
.. Tps.."/"
.. Tid.."/"
.. Ttexte.."/"
.. Tgr.."/"
.. Tdpar
-- local argsModule = frame.args --parms passés à ce module SANS utilité? voir la routine
List_opt = _Xist(Tp).._Xist(Tloc)..frame:preprocess(_Xist(Tps))
local Biden = _Xist(Tauteur1).._Xist(Tdate)-- bidouille
if (nb_erreurs ~= 0) then
renvoi = _coulerr("nb erreurs :"..nb_erreurs.."<br> "..liste_erreurs.." <br>") --ok
else
Blicbleu = (_Xist(Tauteur1).."space A MODIFIER ".._Xist(Tdate)) -- EST renvoyé
local Bancre = frame:preprocess("[[#"..Biden.."{{!}}"..Blicbleu.."]]") --ok
renvoi = renvoi..Liste_opt
rname = "LE name"
-- {{ #tag:ref |some text |name=foo |group=bar}}
--renvoi = frame:callParserFunction( '#tag', { 'ref', 'some text', name = 'foo', group = 'bar'} )
renvoi = frame:callParserFunction( '#tag', { 'ref', "[[#"..Biden.."{{!}}".."BlicYbleu".."]] "..List_opt.."<!--{{sfn|name="..iden.." group="..Tgr.."/}}-->" , name = iden, group = Tgr} )
end
-- return frame:preprocess(renvoi)
end--fin switch
local liste_erreurs = "initLerreur"
local liste_par_nom = "initLnom"
local liste_optaf = "initLoptaf"
local texteaf = "inittexte"
local graf = "initgr"
local iden = "initiden"
local clicbleu = "initclicbleu"
nb_erreurs, liste_erreurs, liste_par_nom, liste_optaf, textaf, graf, iden, clicbleu = _syntax (frame, nb_erreurs)
renvoi =nb_erreurs.."<br>".. liste_erreurs.."<br>"..liste_par_nom.."<br>"..liste_optaf.."<br>".. texteaf.."<br>".. graf.."<br>".. iden.."<br>".. clicbleu
return (renvoi);
end --fin harvap_
return p