« Module:Documentation » : différence entre les versions
Aller à la navigation
Aller à la recherche
Modèle>Od1n (ce "prepend au lieu de replace" faisait plus de mal que de bien, car en plus d'être déroutant, j'ai observé un paquet de contenus dupliqués dans le listing que j'ai survolé ; refs aussi cette discussion que j'ai retrouvée entretemps) |
m (140 revisions imported: Modele avancement) |
||
| (19 versions intermédiaires par 3 utilisateurs non affichées) | |||
| Ligne 1 : | Ligne 1 : | ||
--Ce module implémente le modèle {{ | -- Ce module implémente le modèle {{Méta documentation de modèle}}. | ||
local p = {} | local p = {} | ||
| Ligne 24 : | Ligne 24 : | ||
end | end | ||
local function lienUrl(nomPage, | local function lienUrl(nomPage, texteLien, action, pagePreload) | ||
local | local arguments = {} | ||
if action then | |||
arguments['action'] = action | |||
end | |||
if pagePreload then | if pagePreload then | ||
arguments['preload'] = 'Modèle:Documentation/' .. pagePreload | |||
end | end | ||
return mw.ustring.format('[%s %s]', nomPage:fullUrl( | if arguments['action'] or arguments['preload'] then | ||
return mw.ustring.format('[%s %s]', nomPage:fullUrl(arguments), texteLien) | |||
else | |||
return mw.ustring.format('[[%s|%s]]', nomPage.fullText, texteLien) | |||
end | |||
end | end | ||
| Ligne 37 : | Ligne 45 : | ||
local res = mw.html.create('div') | local res = mw.html.create('div') | ||
-- Titre | |||
res | res | ||
:css('margin-bottom', '1ex') | :css('margin-bottom', '1ex') | ||
| Ligne 50 : | Ligne 59 : | ||
:done() | :done() | ||
-- Liens | |||
local editionLien = res:tag('span') | |||
:addClass('mw-editsection-like plainlinks') | |||
:css('vertical-align', 'middle') | |||
:wikitext('[') | |||
if args['aucun contenu additionnel'] == nil then | |||
if not args.contenu then | |||
if existeDoc then | |||
editionLien | |||
:wikitext('[') | |||
:wikitext(lienUrl(doc, 'voir')) | |||
:wikitext('] ') | |||
:wikitext('[') | |||
:wikitext(lienUrl(doc, 'modifier', 'edit')) | |||
:wikitext('] ') | |||
:wikitext('[') | |||
:wikitext(lienUrl(doc, 'historique', 'history')) | |||
:wikitext('] ') | |||
else | else | ||
editionLien:wikitext(lienUrl(doc, 'créer', 'edit', '' | local pagePreload = 'Preload' | ||
if page.namespace == 828 then | |||
pagePreload = 'PreloadModule' | |||
end | |||
editionLien | |||
:wikitext('[') | |||
:wikitext(lienUrl(doc, 'créer', 'edit', pagePreload)) | |||
:wikitext('] ') | |||
end | end | ||
end | end | ||
end | |||
editionLien | |||
:wikitext('[') | |||
:wikitext(lienUrl(page, 'purger', 'purge')) | |||
:wikitext(']') | |||
return res | return res | ||
| Ligne 126 : | Ligne 152 : | ||
local res = mw.html.create():newline() | local res = mw.html.create():newline() | ||
if | -- Contenu auto haut | ||
if args['contenu auto haut'] then | |||
res:wikitext(args['contenu auto haut']) | |||
:newline() | |||
end | |||
-- Contenu ou sous-page de doc | |||
res :newline() | if args['aucun contenu additionnel'] == nil then | ||
if args.contenu then | |||
res:newline() | |||
:wikitext(args.contenu) | |||
:newline() | |||
elseif existeDoc then | |||
local contenuDoc = mw.getCurrentFrame():expandTemplate{title = doc.prefixedText} | |||
if page.subpageText == 'Bac à sable' or page.subpageText == 'Test' then | |||
contenuDoc = retireBalisesCategories(contenuDoc) | |||
end | |||
res:newline() | |||
:wikitext(contenuDoc) | |||
:newline() | |||
elseif page.subpageText ~= 'Bac à sable' and page.subpageText ~= 'Test' and args['contenu facultatif'] == nil then | |||
local texteBandeau = '<b>Ce %s ne possède aucune [[Aide:Documentation de modèle|documentation]] ' | |||
..'explicative en sous-page</b>, pas même une description succincte.<br> ' | |||
..'Vous pouvez %s afin de documenter ce %s adéquatement.' | |||
if page.namespace == 828 then -- Module | |||
texteBandeau = texteBandeau:format( | |||
'module', | |||
lienUrl(doc, 'créer cette sous-page', 'edit', 'PreloadModule'), | |||
'module' | |||
) | ) | ||
if page. | else -- Modèle | ||
texteBandeau = texteBandeau:format( | |||
'modèle', | |||
lienUrl(doc, 'créer cette sous-page', 'edit', 'Preload'), | |||
'modèle' | |||
) | |||
end | |||
if page.namespace == 10 then -- Modèle | |||
texteBandeau = texteBandeau .. '[[Catégorie:Modèle sans documentation]]' | |||
elseif page.namespace == 828 then -- Module | |||
if page.text:sub(1, 12) == 'Utilisateur:' then | |||
-- Pas de catégorisation pour le pseudo-namespace "Module:Utilisateur:Toto/Nom du module" | |||
elseif existeDoc == false then | |||
texteBandeau = texteBandeau .. '[[Catégorie:Module sans documentation]]' | |||
end | |||
end | end | ||
local param = { | |||
['icône'] = 'OOjs_UI_icon_book-ltr.svg', | |||
' | alt = 'MIT', | ||
style = 'width:80%;', | |||
texte = texteBandeau, | |||
} | |||
res:wikitext(require('Module:Bandeau')._bandeau(param)) | |||
end | end | ||
end | |||
-- Contenu auto bas | |||
if args['contenu auto bas'] then | |||
res:newline() | |||
:wikitext(args['contenu auto bas']) | |||
end | end | ||
res | res | ||
:tag('div') | :tag('div') | ||
:css('clear', 'both') | :css('clear', 'both') | ||
| Ligne 194 : | Ligne 235 : | ||
:css('font-style', 'italic') | :css('font-style', 'italic') | ||
if args | -- Phrase "la documentation est générée par ..." | ||
if | if args['nom modèle'] then | ||
contenuParagraphe:wikitext(args. | local lienAide = '[[Aide:Modèle|modèle]]' | ||
if page.namespace == 828 then | |||
lienAide = '[[Aide:Module|module]]' | |||
end | |||
contenuParagraphe | |||
:wikitext('La [[Aide:Documentation de modèle|documentation]] de ce ') | |||
:wikitext(lienAide) | |||
:wikitext(' est générée par le modèle ') | |||
:wikitext(mw.getCurrentFrame():expandTemplate{title = 'm', args = {args['nom modèle']} }) | |||
:wikitext('.<br>') | |||
else | |||
contenuParagraphe | |||
:tag('span') | |||
:addClass('error') | |||
:wikitext('Erreur : le paramètre <code>nom modèle</code> n\'est pas renseigné.<br>') | |||
end | |||
-- Phrase indiquant la provenance du contenu (dans le corps ou en sous-page) | |||
if args['aucun contenu additionnel'] == nil then | |||
if args.contenu then | |||
contenuParagraphe | contenuParagraphe | ||
:wikitext(' | :wikitext('Elle est directement [[Aide:Inclusion|incluse]] dans l\'appel de ce dernier. ') | ||
:wikitext('Si cette page est protégée, veuillez ') | |||
:wikitext( | |||
:wikitext('transférer le contenu de la documentation vers sa ') | :wikitext('transférer le contenu de la documentation vers sa ') | ||
:wikitext(lienUrl(doc, 'sous-page dédiée', 'edit', '')) | :wikitext(lienUrl(doc, 'sous-page dédiée', 'edit', 'Preload')) | ||
:wikitext('.<br | :wikitext('.<br>') | ||
elseif existeDoc then | |||
contenuParagraphe | |||
:wikitext('Elle est [[Aide:Inclusion|incluse]] depuis ') | |||
if args. | if args['page doc'] then | ||
contenuParagraphe | |||
:wikitext('la page [[') | |||
:wikitext(tostring(doc)) | |||
:wikitext(']]. ') | |||
else | |||
contenuParagraphe | |||
:wikitext('sa [[') | |||
:wikitext(tostring(doc)) | |||
:wikitext('|sous-page de documentation]]. ') | |||
end | end | ||
contenuParagraphe | contenuParagraphe | ||
:wikitext('Veuillez placer les catégories sur cette page-là.<br>') | |||
:wikitext('Veuillez placer les catégories | |||
end | end | ||
end | end | ||
contenuParagraphe:wikitext('Les éditeurs peuvent travailler dans le ') | -- Phrase indiquant les liens vers le bac à sable et la page de test | ||
contenuParagraphe | |||
:wikitext('Les éditeurs peuvent travailler dans le ') | |||
local titrePageBacasable = nomSouspage(page, 'Bac à sable') | local titrePageBacasable = nomSouspage(page, 'Bac à sable') | ||
| Ligne 247 : | Ligne 299 : | ||
:css('font-style', 'normal') | :css('font-style', 'normal') | ||
:wikitext('(') | :wikitext('(') | ||
:wikitext(lienUrl(pageBacasable, 'modifier')) | :wikitext(lienUrl(pageBacasable, 'modifier', 'edit')) | ||
:wikitext(')') | :wikitext(')') | ||
else | else | ||
local | local pagePreload = 'Preload2' | ||
if | if page.namespace == 828 then | ||
pagePreload = nil | |||
end | end | ||
contenuParagraphe | contenuParagraphe | ||
| Ligne 260 : | Ligne 312 : | ||
:css('font-style', 'normal') | :css('font-style', 'normal') | ||
:wikitext('(') | :wikitext('(') | ||
:wikitext(lienUrl(pageBacasable, 'créer', 'edit', | :wikitext(lienUrl(pageBacasable, 'créer', 'edit', pagePreload)) | ||
:wikitext(')') | :wikitext(')') | ||
end | end | ||
if | if page.namespace ~= 828 then | ||
contenuParagraphe:wikitext(' et la page de ') | contenuParagraphe:wikitext(' et la page de ') | ||
| Ligne 277 : | Ligne 329 : | ||
:css('font-style', 'normal') | :css('font-style', 'normal') | ||
:wikitext('(') | :wikitext('(') | ||
:wikitext(lienUrl(pageTest, 'modifier')) | :wikitext(lienUrl(pageTest, 'modifier', 'edit')) | ||
:wikitext(')') | :wikitext(')') | ||
else | else | ||
| Ligne 286 : | Ligne 338 : | ||
:css('font-style', 'normal') | :css('font-style', 'normal') | ||
:wikitext('(') | :wikitext('(') | ||
:wikitext(lienUrl(pageTest, 'créer', 'edit', ' | :wikitext(lienUrl(pageTest, 'créer', 'edit', 'Preload3')) | ||
:wikitext(')') | :wikitext(')') | ||
end | end | ||
| Ligne 297 : | Ligne 349 : | ||
function p._documentation(args) | function p._documentation(args) | ||
local page = mw.title.getCurrentTitle() | local page = mw.title.getCurrentTitle() | ||
local | local titrePageDoc = args['page doc'] or nomSouspage(page, 'Documentation') | ||
local doc = mw.title.new( | local doc = mw.title.new(titrePageDoc) | ||
local existeDoc = existePage(doc) | local existeDoc = existePage(doc) | ||
local res = mw.html.create() | local res = mw.html.create() | ||
| Ligne 312 : | Ligne 364 : | ||
--Génération de la documentation | --Génération de la documentation | ||
local couleur = '#ecfcf4' | |||
if page.namespace == 828 then | |||
couleur = '#ecf0fc' | |||
end | |||
res | res | ||
:tag('div') | :tag('div') | ||
:addClass('documentation') | |||
:css('clear', 'both') | :css('clear', 'both') | ||
:css('margin', '1em 0 0 0') | :css('margin', '1em 0 0 0') | ||
:css('border', '1px solid #aaa') | :css('border', '1px solid #aaa') | ||
:css('background', | :css('background', couleur) | ||
:css('padding', '1em 1em 0.8em') | :css('padding', '1em 1em 0.8em') | ||
:node(entete(args, page, doc, existeDoc)) | :node(entete(args, page, doc, existeDoc)) | ||
| Ligne 324 : | Ligne 382 : | ||
:node(notice(args, page, doc, existeDoc)) | :node(notice(args, page, doc, existeDoc)) | ||
--Catégorisation | -- Catégorisation par défaut pour les modules sans documentation | ||
if | if page.namespace == 828 and page.subpageText ~= 'Bac à sable' and page.subpageText ~= 'Test' then | ||
if | if existeDoc == false then | ||
res:wikitext("[[Catégorie:Module en langage Lua]]") | res:wikitext("[[Catégorie:Module en langage Lua]]") | ||
end | end | ||
Version actuelle datée du 9 avril 2021 à 11:22
La documentation pour ce module peut être créée à Module:Documentation/doc
-- Ce module implémente le modèle {{Méta documentation de modèle}}.
local p = {}
local function existePage(page)
return page and page.exists
end
local function nomSouspage(page, souspage)
--On n'est pas dans une sous-page
if not page.isSubpage then
return page.subjectNsText .. ':' .. page.text .. '/' .. souspage
end
--On est dans une sous-page
local sousPage = page.subpageText
if sousPage == 'Documentation'
or sousPage == 'Bac à sable'
or sousPage == 'Test' then
return page.subjectNsText .. ':' .. page.baseText .. '/' .. souspage
else
return page.subjectNsText .. ':' .. page.text .. '/' .. souspage
end
end
local function lienUrl(nomPage, texteLien, action, pagePreload)
local arguments = {}
if action then
arguments['action'] = action
end
if pagePreload then
arguments['preload'] = 'Modèle:Documentation/' .. pagePreload
end
if arguments['action'] or arguments['preload'] then
return mw.ustring.format('[%s %s]', nomPage:fullUrl(arguments), texteLien)
else
return mw.ustring.format('[[%s|%s]]', nomPage.fullText, texteLien)
end
end
local function entete(args, page, doc, existeDoc)
local res = mw.html.create('div')
-- Titre
res
:css('margin-bottom', '1ex')
:css('border-bottom', '1px solid #aaa')
:css('padding-bottom', '3px')
:wikitext('[[Fichier:Test Template Info-Icon.svg|50px|alt=|link=]]')
:tag('span')
:css('font-weight', 'bold')
:css('font-size', '125%')
:css('vertical-align', 'middle')
:wikitext(' ')
:wikitext(args.titre or 'Documentation')
:done()
-- Liens
local editionLien = res:tag('span')
:addClass('mw-editsection-like plainlinks')
:css('vertical-align', 'middle')
if args['aucun contenu additionnel'] == nil then
if not args.contenu then
if existeDoc then
editionLien
:wikitext('[')
:wikitext(lienUrl(doc, 'voir'))
:wikitext('] ')
:wikitext('[')
:wikitext(lienUrl(doc, 'modifier', 'edit'))
:wikitext('] ')
:wikitext('[')
:wikitext(lienUrl(doc, 'historique', 'history'))
:wikitext('] ')
else
local pagePreload = 'Preload'
if page.namespace == 828 then
pagePreload = 'PreloadModule'
end
editionLien
:wikitext('[')
:wikitext(lienUrl(doc, 'créer', 'edit', pagePreload))
:wikitext('] ')
end
end
end
editionLien
:wikitext('[')
:wikitext(lienUrl(page, 'purger', 'purge'))
:wikitext(']')
return res
end
local function protection(page, doc, existeDoc, message)
-- Insertion automatique du modèle de protection.
local niveauProtection = page.protectionLevels.edit
if niveauProtection and niveauProtection[1] then
local tableProtection = {
autoconfirmed = {'semiProtection', '{{%s*[Ss]emi%-protection%s*[|}]', '{{%s*[Ss]emi%-protection +longue%s*[|}]'},
editextendedsemiprotected = {'semiProtectionEtendue', '{{%s*[Ss]emi%-protection +étendue%s*[|}]'},
sysop = {'protection', '{{%s*[Pp]rotection%s*[|}]'},
}
local protection = tableProtection[niveauProtection[1]]
if not protection then
return ''
end
local alreadyShown = false
if existeDoc then
-- Vérification qu'il n'y a pas déjà un modèle de
-- protection dans la documentation du modèle.
local contenuDoc = doc:getContent()
if contenuDoc:match(protection[2]) or (protection[3] and contenuDoc:match(protection[3])) then
alreadyShown = true
end
end
if not alreadyShown then
if message == '' then
message = nil
end
return require('Module:Protection').main({message}, protection[1], page)
end
end
end
-- pour les bacs à sable, on retire les balises de catégories
-- habituellement situées en "includeonly" à la fin de la documentation
local function retireBalisesCategories(contenuDoc)
local count
repeat
contenuDoc, count = mw.ustring.gsub(contenuDoc, '%[%[Catégorie:[^%]]+%]%][\t\r\n\f ]*$', '')
until count == 0
contenuDoc, count = mw.ustring.gsub(contenuDoc, '[\t\r\n\f ]*$', '')
return contenuDoc
end
local function contenu(args, doc, existeDoc)
local page = mw.title.getCurrentTitle()
local res = mw.html.create():newline()
-- Contenu auto haut
if args['contenu auto haut'] then
res:wikitext(args['contenu auto haut'])
:newline()
end
-- Contenu ou sous-page de doc
if args['aucun contenu additionnel'] == nil then
if args.contenu then
res:newline()
:wikitext(args.contenu)
:newline()
elseif existeDoc then
local contenuDoc = mw.getCurrentFrame():expandTemplate{title = doc.prefixedText}
if page.subpageText == 'Bac à sable' or page.subpageText == 'Test' then
contenuDoc = retireBalisesCategories(contenuDoc)
end
res:newline()
:wikitext(contenuDoc)
:newline()
elseif page.subpageText ~= 'Bac à sable' and page.subpageText ~= 'Test' and args['contenu facultatif'] == nil then
local texteBandeau = '<b>Ce %s ne possède aucune [[Aide:Documentation de modèle|documentation]] '
..'explicative en sous-page</b>, pas même une description succincte.<br> '
..'Vous pouvez %s afin de documenter ce %s adéquatement.'
if page.namespace == 828 then -- Module
texteBandeau = texteBandeau:format(
'module',
lienUrl(doc, 'créer cette sous-page', 'edit', 'PreloadModule'),
'module'
)
else -- Modèle
texteBandeau = texteBandeau:format(
'modèle',
lienUrl(doc, 'créer cette sous-page', 'edit', 'Preload'),
'modèle'
)
end
if page.namespace == 10 then -- Modèle
texteBandeau = texteBandeau .. '[[Catégorie:Modèle sans documentation]]'
elseif page.namespace == 828 then -- Module
if page.text:sub(1, 12) == 'Utilisateur:' then
-- Pas de catégorisation pour le pseudo-namespace "Module:Utilisateur:Toto/Nom du module"
elseif existeDoc == false then
texteBandeau = texteBandeau .. '[[Catégorie:Module sans documentation]]'
end
end
local param = {
['icône'] = 'OOjs_UI_icon_book-ltr.svg',
alt = 'MIT',
style = 'width:80%;',
texte = texteBandeau,
}
res:wikitext(require('Module:Bandeau')._bandeau(param))
end
end
-- Contenu auto bas
if args['contenu auto bas'] then
res:newline()
:wikitext(args['contenu auto bas'])
end
res
:tag('div')
:css('clear', 'both')
return res
end
local function notice(args, page, doc, existeDoc)
local res = mw.html.create('div')
:css('border-top', '1px solid #aaa')
:css('margin', '1.5em 0 0')
local contenuParagraphe = res
:tag('p')
:addClass('plainlinks')
:css('margin-bottom', '0')
:css('padding-left', '1em')
:css('font-style', 'italic')
-- Phrase "la documentation est générée par ..."
if args['nom modèle'] then
local lienAide = '[[Aide:Modèle|modèle]]'
if page.namespace == 828 then
lienAide = '[[Aide:Module|module]]'
end
contenuParagraphe
:wikitext('La [[Aide:Documentation de modèle|documentation]] de ce ')
:wikitext(lienAide)
:wikitext(' est générée par le modèle ')
:wikitext(mw.getCurrentFrame():expandTemplate{title = 'm', args = {args['nom modèle']} })
:wikitext('.<br>')
else
contenuParagraphe
:tag('span')
:addClass('error')
:wikitext('Erreur : le paramètre <code>nom modèle</code> n\'est pas renseigné.<br>')
end
-- Phrase indiquant la provenance du contenu (dans le corps ou en sous-page)
if args['aucun contenu additionnel'] == nil then
if args.contenu then
contenuParagraphe
:wikitext('Elle est directement [[Aide:Inclusion|incluse]] dans l\'appel de ce dernier. ')
:wikitext('Si cette page est protégée, veuillez ')
:wikitext('transférer le contenu de la documentation vers sa ')
:wikitext(lienUrl(doc, 'sous-page dédiée', 'edit', 'Preload'))
:wikitext('.<br>')
elseif existeDoc then
contenuParagraphe
:wikitext('Elle est [[Aide:Inclusion|incluse]] depuis ')
if args['page doc'] then
contenuParagraphe
:wikitext('la page [[')
:wikitext(tostring(doc))
:wikitext(']]. ')
else
contenuParagraphe
:wikitext('sa [[')
:wikitext(tostring(doc))
:wikitext('|sous-page de documentation]]. ')
end
contenuParagraphe
:wikitext('Veuillez placer les catégories sur cette page-là.<br>')
end
end
-- Phrase indiquant les liens vers le bac à sable et la page de test
contenuParagraphe
:wikitext('Les éditeurs peuvent travailler dans le ')
local titrePageBacasable = nomSouspage(page, 'Bac à sable')
local pageBacasable = mw.title.new(titrePageBacasable)
if existePage(pageBacasable) then
contenuParagraphe
:wikitext('[[' .. titrePageBacasable .. '|bac à sable]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageBacasable, 'modifier', 'edit'))
:wikitext(')')
else
local pagePreload = 'Preload2'
if page.namespace == 828 then
pagePreload = nil
end
contenuParagraphe
:wikitext('bac à sable ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageBacasable, 'créer', 'edit', pagePreload))
:wikitext(')')
end
if page.namespace ~= 828 then
contenuParagraphe:wikitext(' et la page de ')
local titrePageTest = nomSouspage(page, 'Test')
local pageTest = mw.title.new(titrePageTest)
if existePage(pageTest) then
contenuParagraphe
:wikitext('[[' .. titrePageTest .. '|test]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageTest, 'modifier', 'edit'))
:wikitext(')')
else
contenuParagraphe
:wikitext('test ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageTest, 'créer', 'edit', 'Preload3'))
:wikitext(')')
end
end
contenuParagraphe:wikitext('.')
return res
end
function p._documentation(args)
local page = mw.title.getCurrentTitle()
local titrePageDoc = args['page doc'] or nomSouspage(page, 'Documentation')
local doc = mw.title.new(titrePageDoc)
local existeDoc = existePage(doc)
local res = mw.html.create()
--Bandeau pour les sous-pages /Bac à sable
if page.subpageText == 'Bac à sable' then
res
:tag('div')
:css('clear', 'both')
:done()
:wikitext(mw.getCurrentFrame():expandTemplate{title = 'Sous-page de bac à sable'})
end
--Génération de la documentation
local couleur = '#ecfcf4'
if page.namespace == 828 then
couleur = '#ecf0fc'
end
res
:tag('div')
:addClass('documentation')
:css('clear', 'both')
:css('margin', '1em 0 0 0')
:css('border', '1px solid #aaa')
:css('background', couleur)
:css('padding', '1em 1em 0.8em')
:node(entete(args, page, doc, existeDoc))
:wikitext(protection(page, doc, existeDoc, args['message protection']))
:node(contenu(args, doc, existeDoc))
:node(notice(args, page, doc, existeDoc))
-- Catégorisation par défaut pour les modules sans documentation
if page.namespace == 828 and page.subpageText ~= 'Bac à sable' and page.subpageText ~= 'Test' then
if existeDoc == false then
res:wikitext("[[Catégorie:Module en langage Lua]]")
end
end
return tostring(res)
end
function p.documentation(frame)
local args = {}
local argsParent = frame:getParent().args
--Paramètres vides interprétés par Lua
for cle, val in pairs(argsParent) do
val = mw.text.trim(val)
if val ~= '' then
args[cle] = val
end
end
return p._documentation(args)
end
return p