Module:Documentation

De Lagny-sur-Marne Wiki
Version datée du 4 août 2013 à 22:28 par 0x010D (discussion | contributions) (Retouche texte selon DIPP de Oliv0 le 1 août 2013 à 16:58 (CEST))
Aller à la navigation Aller à la recherche

--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, 'Documentation du modèle')
   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, '
\n')
   return table.concat(contenu)

end

function p.notice(page)

   local notice = {}
   local arg = mw.title.new(args[1] or doc)
   if args.contenu then
table.insert(notice, '