Aller au contenu

Module:Nsm/Modèle

Une page de Wikiversité, la communauté pédagogique libre.

info 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