Aller au contenu

Module:Nsm/Module

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

info Documentation du Module:Nsm/Module : v · d · m · h.


Le module Nsm/Module, 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/828") -- Table espace de nom
local import_talk  = require("Module:Nsm/Table/829") -- Table espace de discussion 1ère minucule ATTENTION
-- Variables globales
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

--[[
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. 
	t = {}                                 -- Table des résultats
	col = {'page', 'own_doc'}              -- Selection des colonnes
	if frame.args[1] == nil then           -- Par défaut retourne les pages (module/template)
		for k, v in pairs(r_pages) do      -- et documentation assosciée si disponible
			if v.is_doc == nil then t[k] = r_pages[k] end end end
	if frame.args[1] == 'sans' then        -- Filtre les pages sans sous-page documentation
		for k, v in pairs(r_pages) do      -- n'est pas une doc et n'a pas de doc
			if v.is_doc == nil and v.have_doc == nil then	t[k] = r_pages[k] end end end
	if frame.args[1] == 'avec' then        -- Filtre les pages qui disposent d'une documentation
		for k, v in pairs(r_pages) do      -- sur la base du booléen have_doc
			if v.have_doc == true then	t[k] = r_pages[k] end end end
	if frame.args[1] == 'is' then          -- Filtre uniquement les documentations 
		for k, v in pairs(r_pages) do if v.is_doc == true then	t[k] = r_pages[k] 
				col = {'page'} end end end -- Retourne la liste des pages Documentation
	return st_print(t, col, '-i')
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
]]--
return p