Module:Nsm/Lib
Librairie principale de fonctions pour l’outil wmflabs/fr-wikiversity-ns aussi appelé Namespace monitor. Cette Bibliothèque regroupe les fonctions, communes aux suivi des différents espaces de noms et utilise les librairies suivantes :
- Module:Nsm/Lib/Sub la première version de la librairie principale, contient les sous-fonctions.
- Module:Nsm/Lib/Sortable class est responsable de la production des tableaux wikitexte.
- Module:Nsm/Lib/Category regroupe les fonctions relatives aux catégories.
prop()
affiche les nombres de pages, total, pages racines et sous-pages.stat_sub()
affiche les statistiques sur les sous-pages.racine()
affiche un tableau triable des facultés, le nombre de départements attachés et le nombre de sous-pages (dans l'espace de nom Faculté).pages(|filtre)
affiche toutes les pages de l’espace et accepte l’argumentfiltre
pour limiter les pages affichées.group()
affiche les groupes de pages à partir de la racine et le nombre de sous-pages correspondant.redir()
affiche toutes les redirections de l’espace.sub_lost()
montre les sous-pages dont la page supérieure est absente.
Documentation du Module:Nsm/Lib : v · d · m · h.
local p = {}
local import_lib = require("Module:Nsm/Lib/Sub") -- Sous fonctions
local sortable_lib = require("Module:Nsm/Lib/Sortable class") -- Tableaux wikitexte
local lib_category = require("Module:Nsm/Lib/Category") -- Fonctions catégories
function p.redir(frame) -- Par défaut liste les pages de redirection de l'espace ; l'option o=nombre/taux permet d'afficher individuellement le nombre ou le taux de redirection. Voir redir() split_redir() et redir_tx() dans la libraririe.
local r = '; redir() : La fonction liste les redirections, de l\'espace de noms. \n'
local col = {'page', 'nsep', 'cible', 'date1'} -- Colonnes à afficher
--if frame.args['sortie'] == 'nombre' then r = compte(t) end
local to = {} --Table Output
if frame.args['o'] == nil then to = redir(t_pages) --, ns_id
r = r .. st_print(to, col, '-i')end
if frame.args['o'] == 'nombre' then r = t_prop.redirection end
if frame.args['o'] == 'taux' then r = redir_tx(t_prop) end
return r
end
--[[
function p.redir_tx(frame)
local r = ''
local parent_frame = frame:getParent() -- Test si parent_frame est nil
-- nil donc c'est le modèle qui appel ici il faut décaler de 2 arguments ?
if parent_frame == nil then frame.args[1] = frame.args[3] end
if frame.args[1] == 'nombre' then r = t_prop.redirection end
if frame.args[1] == 'taux' then r = redir_tx(t_prop) end
--r = r .. tostring(frame.args[3])
return r
end
]]--
function p.pages(frame) --Affiche la liste des pages de l'espace de nom, dans un tableau triable ; frame['t'] = talk pour l'espace de discussion associé.
local result = '; pages(nom=) : La liste des pages est filtrable, vous pouvez limiter la liste en précisant le nom des pages que vous souhaitez afficher.\n'
--local result = '' -- Debogage affiche les arguments sous le tableau
local t = {} -- Input Table
local parent_frame = frame:getParent() -- Récupare l'objet frame parent
if frame.args['t'] == 'talk' then -- test argument nommé
t = talk_pages -- affecte la table de l'espace discussion
label = talk_label -- definit label !?
else
t = t_pages end -- Sinon utilise la table par défaut
if frame.args['nom'] ~= nil then t = filtre(t, frame.args['nom']) end
if parent_frame == nil then --Test si parent_frame est nil donc c'est le modèle qui appel ici il faut décaler de 2 arguments
t = pages(t, frame.args['nom'])
for k, v in pairs(frame.args) do result = result .. '* parent_frame : '..k..' ; ' .. tostring(v)..'\n' end --Debug ajoute parent_arguments sous tableau
else
t = pages(t, frame.args['nom']) --, filtre, label)
result = result ..prefix(lang, label)
for k, v in pairs(frame.args) do result = result .. '* current_frame : '..k..' ; ' .. tostring(v)..'\n' end -- Debug Ajoute les argument current frame sous tableau
end
local col = {'page', 'nsep', 'cible', 'date1'}
result = result .. st_print(t, col, '-i')
return result
end
function p.doc(frame) -- p.doc( |avec |sans |is) La fonction utilise les valeurs is_doc, have_doc et own_doc collectées avec Python ; pour afficher la liste de pages, associée à celle des sous-pages documentation quand disponible. 'avec' filtre les pages documentées, 'sans' liste les pages sans docuemntation, 'is' affiche uniquement les documentations.
local it = r_pages
if frame.args['u'] == 'no' then it = user_tpl(r_pages, 'no') end
if frame.args['nom'] ~= nil then it = filtre(it, frame.args['nom']) end
local t = doc(it, frame.args[1]) -- Table des résultats
local col = {'page', 'own_doc', 'nsep', 'cible'} -- Selection des colonnes
return st_print(t, col, '-i')
end
-- test provisoire replacer cette sous-fonction avec les autres
function doc(it, f) -- input table, filtre
local to = {} -- table output, résultats
if f == nil then -- Par défaut retourne les pages (module/template)
for k, v in pairs(it) do -- et documentation assosciée si disponible
if v.is_doc == nil then to[k] = it[k] end end end
if f == 'sans' then -- Filtre les pages sans sous-page documentation
for k, v in pairs(it) do -- n'est pas une doc et n'a pas de doc
if v.is_doc == nil and v.have_doc == nil then to[k] = it[k] end end end
if f == 'avec' then -- Filtre les pages qui disposent d'une documentation
for k, v in pairs(it) do -- sur la base du booléen have_doc
if v.have_doc == true then to[k] = it[k] end end end
if f == 'is' then -- Filtre uniquement les documentations
for k, v in pairs(it) do if v.is_doc == true then to[k] = it[k]
col = {'page'} end end end -- Retourne la liste des pages Documentation
return to
end
function p.chk_cat(frame) -- Reçoit le nom court de la catégorie compare les articles
local r = chk_cat(frame.args[1], t_root) -- avec les pages racines de l'espace !
return r -- voir Namespace lib chk_cat()
end
function p.find_cat(frame) -- FRAME Cherche les catégories pour les pages racines
local l_cat = find_cat(t_root, pfix)
return l_cat
end
function p.category_members(frame) -- Modifier Affichage le contenu d'une catégorie 2 colonnes articles et sous-catégories.
local t = category_members(frame.args[1])
local col = {'page', 'articles', 'subcats', 'all_in_cat'}
local r = st_print(t, col, '-i')
return r
end
function p.sub_lost(frame) -- Affiche les sous-pages "perdues" c'est-à-dire sans page parent.
local result = sub_lost(t_pages) -- SUIVRe EXCLURE REDIRECTIONS
local col = {'page', 'nsep', 'cible'} --nsub pas disponible
return st_print(result, col, '-i') --result --TEST
end
function p.prop(frame) --Affiche les propriétés de l'espace de nom ; frame['t'] = talk permet d'afficher les propriétés de l'espace de discussion relatif.
local r = ''
if frame.args['t'] == 'talk' then r = ns_prop(talk_prop) else r = ns_prop(t_prop) end
return r
end
function p.group(frame) -- Voir group() dans la libraririe et sub_lost()
local result = group(t_pages, t_sub, frame, label)
return result
end
function p.racine(frame) -- Voir racine() dans la libraririe
local result = racine(t_root, t_sub, frame, label)
return result
end
function p.racine_old(frame) -- Voir racine() dans la libraririe
local result = racine(t_pages, frame, label)
return result
end
function p.stat_sub(frame) -- Affiche le nombre de pages par niveau
local r = ns_stat_sub(t_pages)
return r
end
--DEBUG
function p.nsm_base_text() -- Calcul base_text à partir de regex sur v.page
r=''
for k, v in pairs(t_pages) do
r =r .. '* '..v.page..'\n' --provoque NOT ENOUGH MEMORY
z = mw.ustring.match(v.page, '.*/')
if z ~= nil then
z = mw.ustring.sub(z, 0, (mw.ustring.len(z)-1))
r = r ..'* '.. z ..'\n'
end
end -- Liste les pages et le basetexte correspondant
return r
end
return p