« Module:Documentation » : différence entre les versions
on évite |
optimisation du code ; importation du bac à sable |
||
| Ligne 1 : | Ligne 1 : | ||
--Ce module | --Ce module implémente le modèle {{Documentation}}. | ||
local p = {} | local p = {} | ||
function p.corps(frame) | function p.corps(frame) | ||
args = frame:getParent().args | |||
local page = mw.title.getCurrentTitle() | local page = mw.title.getCurrentTitle() | ||
doc = p.docname(page) | |||
local corps = {} | local corps = {} | ||
| Ligne 15 : | Ligne 16 : | ||
--Génération de la documentation | --Génération de la documentation | ||
table.insert(corps, | table.insert(corps, p.entete(page)) | ||
table.insert(corps, p.contenu(frame | table.insert(corps, p.contenu(frame, page)) | ||
table.insert(corps, | table.insert(corps, p.notice(page)) | ||
--Code HTML brut | --Code HTML brut | ||
if args.raw then | if args.raw then | ||
return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>') | return frame:preprocess('<nowiki>' .. table.concat(corps) .. '</nowiki>\n:' .. os.clock()) | ||
end | end | ||
return table.concat(corps) | return table.concat(corps) | ||
end | end | ||
| Ligne 48 : | Ligne 42 : | ||
end | end | ||
function p.entete( | function p.ifexist(page) | ||
if not page then return false end | |||
if mw.title.new(page).exists then return true end | |||
return false | |||
end | |||
function p.entete(page) | |||
local entete = {'<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:'} | local entete = {'<div style="clear:both; margin:1em 0 0 0; border:1px solid #aaa; background:'} | ||
if not args.couleur then | if not args.couleur then table.insert(entete, '#ecfcf4') | ||
else table.insert(entete, args.couleur) end | |||
else | |||
table.insert(entete, '; padding:1em 1em 0.8em;">') | table.insert(entete, '; padding:1em 1em 0.8em;">') | ||
| Ligne 63 : | Ligne 59 : | ||
table.insert(entete, '<span style="font-weight:bold; font-size:125%"> ') | table.insert(entete, '<span style="font-weight:bold; font-size:125%"> ') | ||
if args.titre then | if args.titre then table.insert(entete, args.titre) | ||
else table.insert(entete, 'Documentation') end | |||
else | |||
table.insert(entete, '</span>') | table.insert(entete, '</span>') | ||
if not args.contenu then | if not args.contenu then | ||
table.insert(entete, '<span | table.insert(entete, '<span class="mw-editsection plainlinks">[[') | ||
local arg = mw.title.new(args[1] or doc) | |||
if args[1] | if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then | ||
table.insert(entete, arg:fullUrl('action=edit') .. ' modifier]') | |||
table.insert(entete, '] [[') | |||
table.insert(entete, page:fullUrl('action=purge') .. ' purger]') | |||
else | else | ||
table.insert(entete, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"})) | |||
table.insert(entete, ' créer]') | |||
end | end | ||
table.insert(entete, ']</span>') | table.insert(entete, ']</span>') | ||
| Ligne 98 : | Ligne 82 : | ||
end | end | ||
function p.contenu(frame | function p.contenu(frame, page) | ||
local contenu = {} | local contenu = {} | ||
local doc | local arg = args[1] or doc | ||
if args.contenu then | if args.contenu then | ||
table.insert(contenu, '\n') | table.insert(contenu, '\n') | ||
table.insert(contenu, args.contenu) | table.insert(contenu, args.contenu) | ||
else | else | ||
table.insert(contenu, frame:preprocess('<nowiki /> | table.insert(contenu, frame:preprocess('<nowiki />')) | ||
table.insert(contenu, '\n') | |||
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then | |||
table.insert(contenu, frame:preprocess('{{' .. arg .. '}}')) | |||
table.insert(contenu, frame:preprocess('{{' .. | |||
end | end | ||
end | end | ||
table.insert(contenu, frame:preprocess(' | table.insert(contenu, '\n') | ||
table.insert(contenu, frame:preprocess('<nowiki />')) | |||
table.insert(contenu, '<div style="clear:both" />\n') | |||
return table.concat(contenu) | return table.concat(contenu) | ||
end | end | ||
function p.notice( | function p.notice(page) | ||
local notice = {} | local notice = {} | ||
local | local arg = mw.title.new(args[1] or doc) | ||
if args.contenu then | if args.contenu then | ||
| Ligne 134 : | Ligne 113 : | ||
table.insert(notice, args.notice) | table.insert(notice, args.notice) | ||
else | else | ||
table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce | table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce ') | ||
table.insert(notice, 'est directement [[Aide:Inclusion|incluse]] dans le corps de ce dernier.<br />') | table.insert(notice, '[[Aide:Modèle|modèle]] est directement [[Aide:Inclusion|incluse]] ') | ||
table.insert(notice, ' | table.insert(notice, 'dans le corps de ce dernier.<br />Si cette page est protégée, ') | ||
table.insert(notice, | table.insert(notice, 'veuillez transférer le contenu de la documentation vers sa [') | ||
table.insert(notice, ' | table.insert(notice, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"})) | ||
table.insert(notice, ' sous-page dédiée].') | |||
end | end | ||
else | else | ||
| Ligne 145 : | Ligne 125 : | ||
table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">') | table.insert(notice, '<p style="margin-bottom:0; padding-left:1em; font-style:italic;">') | ||
table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce ') | table.insert(notice, 'La [[Aide:Comment documenter un modèle ?|documentation]] de ce ') | ||
table.insert(notice, '[[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa | table.insert(notice, '[[Aide:Modèle|modèle]] est [[Aide:Inclusion|incluse]] depuis sa [[') | ||
table.insert(notice, tostring(arg) .. '|sous-page de documentation]]') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">([') | |||
table.insert(notice, arg:fullUrl('action=edit')) | |||
table.insert(notice, ' modifier] | [') | |||
table.insert(notice, arg:fullUrl('action=history') .. ' historique])</span>.<br />') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">(') | |||
table.insert(notice, | |||
else | else | ||
table.insert(notice, '<div class="plainlinks">') | table.insert(notice, '<div class="plainlinks">') | ||
| Ligne 172 : | Ligne 137 : | ||
table.insert(notice, 'Les éditeurs peuvent travailler dans le ') | table.insert(notice, 'Les éditeurs peuvent travailler dans le ') | ||
local bacasable = arg.subjectNsText .. ":" .. arg.baseText .. "/Bac à sable" | |||
local argbacasable = mw.title.new(bacasable) | |||
table.insert(notice, '[[ | if p.ifexist(bacasable) then | ||
table.insert(notice, '[[' .. bacasable .. '|bac à sable]]') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">([') | |||
table.insert(notice, argbacasable:fullUrl('action=edit')) | |||
table.insert(notice, ' modifier])</span>') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">(') | |||
table.insert(notice, ' | |||
table.insert(notice, ' | |||
else | else | ||
table.insert(notice, ' | table.insert(notice, 'bacasable <span style="font-size:89%; font-style:normal;">([') | ||
table.insert(notice, | table.insert(notice, argbacasable:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload2"})) | ||
table.insert(notice, ' créer])</span>') | |||
table.insert(notice, ')</span>') | |||
end | end | ||
table.insert(notice, ' et la page de ') | table.insert(notice, ' et la page de ') | ||
local test = arg.subjectNsText .. ":" .. arg.baseText .. "/Test" | |||
local argtest = mw.title.new(test) | |||
table.insert(notice, '[[ | if p.ifexist(test) then | ||
table.insert(notice, '[[' .. test .. '|test]]') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">([') | |||
table.insert(notice, argtest:fullUrl('action=edit')) | |||
table.insert(notice, ' modifier])</span>') | |||
table.insert(notice, ' <span style="font-size:89%; font-style:normal;">(') | |||
table.insert(notice, ' | |||
table.insert(notice, ' | |||
else | else | ||
table.insert(notice, 'test <span style="font-size:89%; font-style:normal;">(') | table.insert(notice, 'test <span style="font-size:89%; font-style:normal;">([') | ||
table.insert(notice, | table.insert(notice, argtest:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload3"})) | ||
table.insert(notice, ' créer])</span>') | |||
table.insert(notice, ')</span>') | |||
end | end | ||
table.insert(notice, '.<br />Veuillez placer les catégories dans la sous-page ') | table.insert(notice, '.<br />Veuillez placer les catégories dans la sous-page ') | ||
table.insert(notice, '<span class="plainlinks">[') | table.insert(notice, '<span class="plainlinks">[') | ||
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then | if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then | ||
table.insert(notice, arg:fullUrl('action=edit')) | |||
else | else | ||
table.insert(notice, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"})) | |||
end | end | ||
table.insert(notice, ' /Documentation | |||
table.insert(notice, ' /Documentation].') | |||
end | end | ||
table.insert(notice, '</p></div></div>') | table.insert(notice, '</p></div></div>') | ||
Version du 28 juillet 2013 à 17:56
--Ce module implémente le modèle Modèle:Méta documentation de modèle.
local p = {}
function p.corps(frame)
args = frame:getParent().args
local page = mw.title.getCurrentTitle()
doc = p.docname(page)
local corps = {}
--Bandeau pour les sous-pages /Bac à sable if page.subpageText == 'Bac à sable' then
table.insert(corps, '
table.insert(corps, frame:preprocess('Modèle:Sous-page de bac à sable'))
end
--Génération de la documentation table.insert(corps, p.entete(page)) table.insert(corps, p.contenu(frame, page)) table.insert(corps, p.notice(page))
--Code HTML brut
if args.raw then
return frame:preprocess('' .. table.concat(corps) .. '\n:' .. os.clock())
end
return table.concat(corps)
end
function p.docname(page)
--On n'est pas dans une sous-page if not page.isSubpage then return page.subjectNsText .. ":" .. page.text .. "/Documentation" end
--On est dans une sous-page
if page.subpageText == 'Documentation'
or page.subpageText == 'Bac à sable'
or page.subpageText == 'Test' then
return page.subjectNsText .. ":" .. page.baseText .. "/Documentation"
else
return page.subjectNsText .. ":" .. page.text .. "/Documentation"
end
end
function p.ifexist(page)
if not page then return false end if mw.title.new(page).exists then return true end return false
end
function p.entete(page)
local entete = {'table.insert(entete, '') table.insert(entete, ' ')
if args.titre then table.insert(entete, args.titre) else table.insert(entete, 'Documentation') end table.insert(entete, '')
if not args.contenu then
table.insert(entete, '[[')
local arg = mw.title.new(args[1] or doc)
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
table.insert(entete, arg:fullUrl('action=edit') .. ' modifier]')
table.insert(entete, '] [[')
table.insert(entete, page:fullUrl('action=purge') .. ' purger]')
else
table.insert(entete, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"}))
table.insert(entete, ' créer]')
end
table.insert(entete, ']')
end
table.insert(entete, 'return table.concat(entete)
end
function p.contenu(frame, page)
local contenu = {}
local arg = args[1] or doc
if args.contenu then
table.insert(contenu, '\n')
table.insert(contenu, args.contenu)
else
table.insert(contenu, frame:preprocess(''))
table.insert(contenu, '\n')
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
table.insert(contenu, frame:preprocess('Modèle:' .. arg .. ''))
end
end
table.insert(contenu, '\n')
table.insert(contenu, frame:preprocess(''))
table.insert(contenu, 'return table.concat(contenu)
end
function p.notice(page)
local notice = {}
local arg = mw.title.new(args[1] or doc)
if args.contenu thentable.insert(notice, '
\n')
if args.notice then
table.insert(notice, args.notice)
else
table.insert(notice, 'La documentation de ce ')
table.insert(notice, 'modèle est directement incluse ')
table.insert(notice, 'dans le corps de ce dernier.
Si cette page est protégée, ')
table.insert(notice, 'veuillez transférer le contenu de la documentation vers sa [')
table.insert(notice, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"}))
table.insert(notice, ' sous-page dédiée].')
end
else
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
table.insert(notice, '
')
table.insert(notice, 'La documentation de ce ')
table.insert(notice, 'modèle est incluse depuis sa [[')
table.insert(notice, tostring(arg) .. '|sous-page de documentation]]')
table.insert(notice, ' ([')
table.insert(notice, arg:fullUrl('action=edit'))
table.insert(notice, ' modifier] | [')
table.insert(notice, arg:fullUrl('action=history') .. ' historique]).
')
else
table.insert(notice, '
')
end
table.insert(notice, 'Les éditeurs peuvent travailler dans le ')
local bacasable = arg.subjectNsText .. ":" .. arg.baseText .. "/Bac à sable"
local argbacasable = mw.title.new(bacasable)
if p.ifexist(bacasable) then
table.insert(notice, 'bac à sable')
table.insert(notice, ' ([')
table.insert(notice, argbacasable:fullUrl('action=edit'))
table.insert(notice, ' modifier])')
else
table.insert(notice, 'bacasable ([')
table.insert(notice, argbacasable:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload2"}))
table.insert(notice, ' créer])')
end
table.insert(notice, ' et la page de ')
local test = arg.subjectNsText .. ":" .. arg.baseText .. "/Test"
local argtest = mw.title.new(test)
if p.ifexist(test) then
table.insert(notice, 'test')
table.insert(notice, ' ([')
table.insert(notice, argtest:fullUrl('action=edit'))
table.insert(notice, ' modifier])')
else
table.insert(notice, 'test ([')
table.insert(notice, argtest:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload3"}))
table.insert(notice, ' créer])')
end
table.insert(notice, '.
Veuillez placer les catégories dans la sous-page ')
table.insert(notice, '[')
if args[1] and p.ifexist(args[1]) or p.ifexist(doc) then
table.insert(notice, arg:fullUrl('action=edit'))
else
table.insert(notice, arg:fullUrl({["action"]="edit", ["preload"]="Modèle:Documentation/Preload"}))
end
table.insert(notice, ' /Documentation].')
end
table.insert(notice, '
return table.concat(notice)
end
return p