Module:Nsm/Modèle
Documentation du Module:Nsm/Modèle : v · d · m · h.
Le module Nsm/Modèle, est un sous-module du module principal Nsm. Reportez vous à l’aide du modèle {{Nsm}}.
- Voir aussi
- Projet:Laboratoire/Espaces de noms/Minute technique
- Namespace monitor au Labo. d’idées MetaWiki
- toollabs:fr-wikiversity-ns
- Phab:diffusion/1906
local p = require("Module:Nsm/Lib") -- Bibliothèque NameSpace Monitor
local import = require("Module:Nsm/Table/10") -- Tables espace de nom Modèle
local import_talk = require("Module:Nsm/Table/11") -- Tables espace de Discussion associé
-- Variables globales
ns_id = 10 --inutile?
t_prop = import.t_prop -- ns properties
t_pages = import.t_pages -- ns pages table
talk_prop = import_talk.t_prop -- ns talk properties
talk_pages = import_talk.t_talkpages -- talk pages table
label = t_prop.label -- Label de l'espace de noms
talk_label = talk_prop.label -- Label espace discussion
lang = t_prop.lang -- Global
t_root = ns_root_only(t_pages)
t_sub = ns_subpages_only(t_pages)
r_pages = split_redir(t_pages, '-r') -- table des pages sans redirection
t_redir = split_redir(t_pages) -- table des redirections
-- Adapter cette fonction à l'usage de filtre() utiliser une valeur clé qui passe le motif regex... ensuite implémenter l'option inverse à la fx filter()
function p.user_tpl(frame) -- Affiche la liste des modèles utilisateur '-u' affiche la liste inverse
local it = r_pages -- input table
local to = {} -- output table
if frame.args[1] == '-u' then to = user_tpl(it, 'no') else to = user_tpl(it) end
col = {'page', 'own_doc'}
return st_print(to, col, '-i') --r --
end
function user_tpl(it, opt) -- défaut nil=yes
local to = {} -- output table résultats
local motif = '^U[st]' -- SIMPLIFIÉ , manque U, U-
local position = mw.ustring.len(prefix(lang, label)) + 1 --Attention ':'
local avec = {} -- tables des modèles utilisateur
local sans = {} -- table sans modèle utilisateur
local r = '' --Debug
for k, v in pairs(it) do
local titre = mw.ustring.sub(v.page, position)
if mw.ustring.find(titre, motif) ~= nil then
avec[k] = it[k] -- copie dans la table
--r = r..'# '..titre..'\n' --Debug
else
sans[k] = it[k] -- copie dans la table
end
end
if opt == nil then to = avec else to = sans end
return to
end
function p.test() -- La table t_redir est disonible
r = '' -- Comment convertir l'argument en pointeur vers la tabele ??
for k, v in pairs(t_redir) do r =r ..k..v.page end
return r
end
--[[
function p.documentation(frame)
local t_docd, t_undoc = {}, {} --tables vides
local r='' --DEBUG RESULT
local motif = '/Documentation' -- Améliorer et variable tipo global (dépend du site)
for k, v in pairs(r_pages) do -- itération table sans redirection
--r=r..'*'..v.page..'\n' -- DEBUG
local docd = false -- initialise le test à chaque tour
if v.nsep == 0 then -- traitement des pages racines
for ks, vsub in pairs(t_sub) do -- itération des sous-pages
if vsub.page == v.page..motif then -- comparaison des titres
docd = true -- Documentation OK
v.sub_doc = vsub.page -- Lien pour documentation
t_docd[k] = r_pages[k] -- copier dans t_docd
--r=r..'# '..v.page..' ; '..vsub.page..'\n' --DEBUG
end
end
if docd == false then t_undoc[k] = r_pages[k] end -- table des modèles non documentés
else
--r = r ..'*'..v.page..' ; '..'\n'
-- verifie absence du motif à la fin de la chaine -len(motif)
-- la sous-page est un modèles pas une documentation
if mw.ustring.find(v.page, motif, -mw.ustring.len(motif)) == nil then
--r=r..'MATCH' -- DEBUG
--sub fx chk_sub_doc()
for ks, vsub in pairs(t_sub) do -- itération des sous-pages
if vsub.page == v.page..motif then -- comparaison des titres
docd = true -- Documentation OK
v.sub_doc = vsub.page -- Lien pour documentation
t_docd[k] = r_pages[k] -- copier dans t_docd
r=r..'# '..v.page..' ; '..vsub.page..'\n'
end
end
-- modules sans sous-page /Documentation
if docd == false then t_undoc[k] = r_pages[k] end --copier dans t_undoc
end -- sub fx chk_sub_doc()
end
end
local col = {'page', 'sub_doc'}
if frame.args[1] == 'avec' then
t = t_docd
elseif frame.args[1] == 'sans' then
t = t_undoc
elseif frame.args[1] == nil then
t = t_docd
for k, v in pairs(t_undoc) do t[k] = t_undoc[k] end -- scinde les deux tables
end
return st_print(t, col, '-i') --r
end
function p.zsub()
local r = ''
t = find_subpages(t_root, t_sub)
return r
end
function find_subpages(t_root, t_sub) --cherche les sous pages de la ns_table from dans la ns_table 'to' ; ajoute les paramètres subpages et nsub et retourne la table 'from'
local r = '' --DEBUG
for k1, v1 in pairs(t_root) do -- Itération de la table racine
if k1 < 10 then
--r = r ..'* '..k1.. tostring(v1.page)..'\n'
local subpages = {} -- Table pour les résultats
local motif = v1.page..'/' --prefixe des sous-pages
for k2, v2 in pairs(t_sub) do -- Itération table sous-pages
if pcall(mw.ustring.match(v2.page, motif)) then
test = mw.ustring.match(v2.page, motif)
else
r = r .. 'ERROR' end
r =r..tostring(test)
-- ATTENTION BUG MODèLES Unclosed capture beginning at pattern character 11
end
end
end
return r --t_root --
end
]]--
return p