Mòdul:Documentacion
La documentacion d'utilizacion d'aquel modul se pòt crear a Mòdul:Documentacion/ús
--Aqueste modul implementa lo modèl {{Documentacion}}.
local p = {}
local function existePage(page)
return page and page.exists
end
local function nomDocumentation(page)
--On n'est pas dans une sous-page
if not page.isSubpage then
return page.subjectNsText .. ':' .. page.text .. '/Documentacion'
end
--On est dans une sous-page
local sousPage = page.subpageText
if sousPage == 'Documentacion'
or sousPage == 'Nauc de sabla'
or sousPage == 'Tèst' then
return page.subjectNsText .. ':' .. page.baseText .. '/Documentacion'
else
return page.subjectNsText .. ':' .. page.text .. '/Documentacion'
end
end
local function lienUrl(nomPage, titrePage, action, pagePreload)
local argument = {['action'] = action or 'edit'}
if pagePreload then
argument['preload'] = 'Modèl:Documentacion/Preload' .. pagePreload
end
return mw.ustring.format('[%s %s]', nomPage:fullUrl(argument), titrePage)
end
local function entete(args, page, doc, existeDoc)
local res = mw.html.create('div')
res
:css('margin-bottom', '1ex')
:css('border-bottom', '1px solid #aaa')
:css('padding-bottom', '3px')
:wikitext('[[Fichièr: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 'Documentacion')
:done()
if not args.contenu then
local editionLien = res:tag('span')
:addClass('mw-editsection plainlinks')
:css('vertical-align', 'middle')
:wikitext('[')
if existeDoc then
editionLien:wikitext(lienUrl(doc, 'modificar'))
else
if args.module then
editionLien:wikitext(lienUrl(doc, 'crear', 'edit', 'Module'))
else
editionLien:wikitext(lienUrl(doc, 'crear', 'edit', ''))
end
end
editionLien
:wikitext('] [')
:wikitext(lienUrl(page, 'purgar', 'purge', 'purga'))
:wikitext(']')
end
return res
end
local function protection(page, doc, existeDoc)
-- Insertion automatique du modèle de protection.
local niveauProtection = page.protectionLevels.edit
if niveauProtection and niveauProtection[1] then
local tableProtection = {
autoconfirmed = {'semiProtection', 'semiProteccion', 'semiproteccion', '{{%s*[Ss]emi%-protection%s*l?o?n?g?u?e?[|}]', '{{%s*[Ss]emiproteccion%s*longa%s*[|}]'},
editextendedsemiprotected = {'semiProtectionEtendue', 'semiProteccionEspandida', 'semiproteccionEspandida', '{{%s*[Ss]emi%-protection étendue%s*[|}]', '{{%s*[Ss]emiproteccion espandida%s*[|}]'},
sysop = {'protection', 'proteccion', '{{%s*[Pp]rotection%s*[|}]', '{{%s*[Pp]roteccion%s*[|}]'},
}
local protection = tableProtection[niveauProtection[1]]
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]) then
protection = false
end
end
if protection then
return require('Module:Proteccion').main({}, protection[1], page)
end
end
end
local function contenu(args, doc, existeDoc)
local page = mw.title.getCurrentTitle()
local res = mw.html.create():newline()
if args.contenu then
res:wikitext(args.contenu)
elseif existeDoc then
local frame = mw.getCurrentFrame()
if frame.args and frame.args['contenu sous-page'] then
res:wikitext(frame.args['contengut sospagina'])
else
res:wikitext(frame:expandTemplate{title = doc.prefixedText})
end
elseif page.subpageText ~= 'Nauc de sabla' and page.subpageText ~= 'Tèst' then
local texteBandeau = '<b>Aqueste %s possedís pas cap de [[Ajuda:Documentacion de modèl|documentacion]] '
..'explicativa en sospagina</b>, quitament pas una descripcion succinta.<br> '
..'Podètz %s per fin de documentar aqueste %s adeqüatament.'
if args.module then
texteBandeau = texteBandeau:format(
'module',
lienUrl(doc, 'crear aquesta sospagina', 'edit', 'Module'),
'module'
)
else
texteBandeau = texteBandeau:format(
'modèl',
lienUrl(doc, 'crear aquesta sospagina', 'edit', ''),
'modèl'
)
end
if page.namespace == 10 then
texteBandeau = texteBandeau .. '[[Categoria:Modèl sens documentacion]]'
elseif page.namespace == 828 then
if page.baseText == 'Mapa/donadas' or page.baseText == 'Country data' or page.text:sub(1, 12) == 'Utilizaire:' then
-- pas de catégorisation pour : modèles de données, pseudo-namespace "Module:Utilisateur:Toto/Nom du module"
else
texteBandeau = texteBandeau .. '[[Categoria:Modul sens documentacion]]'
end
end
local param = {
['icòna'] = 'Book-cover-A-Z.svg',
alt = 'domeni public',
style = 'width:80%;',
texte = texteBandeau,
}
res:wikitext(require('Module:Bendèl')._bandeau(param))
end
res
:newline()
: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')
if args.contenu then
if args.notice then
contenuParagraphe:wikitext(args.notice .. '<br />')
else
contenuParagraphe
:wikitext('La [[Ajuda:Documentacion de modèl|documentacion]] ')
:wikitext('d\'aqueste [[Ajuda:Modèl|modèl]] es dirèctament ')
:wikitext('[[Ajuda:Inclusion|inclusa]] dins lo còs d\'aqueste darrièr. ')
:wikitext(lienUrl(page, 'Clicatz aicí per purgar lo cache', 'purga'))
:wikitext('.<br /> Se aquesta pagina es protegida, transferissètz ')
:wikitext('lo contengut de la documentacion cap a sa ')
:wikitext(lienUrl(doc, 'sospagina dedicada', 'edit', ''))
:wikitext('.<br /> ')
end
else
if existeDoc then
local lienAide = '[[Ajuda:Modèl|modèl]]'
if args.module then
lienAide = '[[Ajuda:Modul|modul]]'
end
contenuParagraphe
:wikitext('La [[Ajuda:Documentacion de modèl|documentacion]] d\'aqueste ')
:wikitext(lienAide)
:wikitext(' es [[Ajuda:Inclusion|inclusa]] dempuèi sa [[')
:wikitext(tostring(doc))
:wikitext('|sospagina de documentacion]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(doc, 'modificar'))
:wikitext(' | ')
:wikitext(lienUrl(doc, 'istoric', 'history'))
:wikitext(').<br /> ')
:done()
:wikitext('Plaçatz las categorias dins la sospagina ')
:wikitext(lienUrl(doc, '/Documentacion'))
:wikitext('.<br /> ')
end
end
contenuParagraphe:wikitext('Los editors pòdon trabalhar dins lo ')
local titrePageBacasable = nomDocumentation(page):gsub('/Documentacion', '/Nauc de sabla')
local pageBacasable = mw.title.new(titrePageBacasable)
if existePage(pageBacasable) then
contenuParagraphe
:wikitext('[[' .. titrePageBacasable .. '|nauc de sabla]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageBacasable, 'modificar'))
:wikitext(')')
else
local preLoad = '2'
if args.module then
preLoad = nil
end
contenuParagraphe
:wikitext('nauc de sabla ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageBacasable, 'crear', 'edit', preLoad))
:wikitext(')')
end
if not args.module then
contenuParagraphe:wikitext(' e la pagina de ')
local titrePageTest = nomDocumentation(page):gsub('/Documentacion', '/Tèst')
local pageTest = mw.title.new(titrePageTest)
if existePage(pageTest) then
contenuParagraphe
:wikitext('[[' .. titrePageTest .. '|tèst]] ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageTest, 'modificar'))
:wikitext(')')
else
contenuParagraphe
:wikitext('tèst ')
:tag('span')
:css('font-size', '89%')
:css('font-style', 'normal')
:wikitext('(')
:wikitext(lienUrl(pageTest, 'crear', 'edit', '3'))
:wikitext(')')
end
end
contenuParagraphe:wikitext('.')
return res
end
function p._documentation(args)
local page = mw.title.getCurrentTitle()
local titreDoc = nomDocumentation(page)
local doc = mw.title.new(args[1] or titreDoc)
local existeDoc = existePage(doc)
local res = mw.html.create()
--Bandeau pour les sous-pages /Bac à sable
if page.subpageText == 'Nauc de sabla' then
res
:tag('div')
:css('clear', 'both')
:done()
:wikitext(mw.getCurrentFrame():expandTemplate{title = 'Sospagina de nauc de sabla'})
end
--Génération de la documentation
res
:tag('div')
:css('clear', 'both')
:css('margin', '1em 0 0 0')
:css('border', '1px solid #aaa')
:css('background', args.couleur or '#ecfcf4')
:css('padding', '1em 1em 0.8em')
:node(entete(args, page, doc, existeDoc))
:wikitext(protection(page, doc, existeDoc))
:node(contenu(args, doc, existeDoc))
:node(notice(args, page, doc, existeDoc))
--Catégorisation des modules, en rangeant à part les modules de données
if page.namespace == 828 and page.subpageText ~= 'Nauc de sabla' and page.subpageText ~= 'Tèst' then
if page.isSubpage and page.baseText == 'Mapa/donadas' then
res:wikitext("[[Categoria:Modul de parametratge de mapa]]")
elseif page.isSubpage and page.baseText == 'Country data' then
res:wikitext("[[Categoria:Modul d'informacions país]]")
else
res:wikitext("[[Categoria:Modul en lengatge 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
if val ~= '' then
args[cle] = mw.text.trim(val)
end
end
return p._documentation(args)
end
function p.nomDocumentation(frame)
if frame.args[1] and mw.text.trim(frame.args[1]) ~= '' then
return frame.args[1]
else
local titreDoc = nomDocumentation(mw.title.getCurrentTitle())
if mw.title.new(titreDoc).exists then
return titreDoc
end
end
end
return p