Module:Nsm/Faculté
Le Module:Nsm/Faculté utilise les tables du Module:Nsm/Table/106, lui-même écrit par le biais du script python fac.py
(cf fr-wikiversity-ns sur gerrit.wikimedia.org). L'objectif est de créer une série de fonctions, pour générer différents tableaux, listes, vues, calculs statistiques ; à partir des données récoltées par Python.
fac_dpt
affiche une liste des départements par faculté.liste
affiche les départements et leur(s) faculté(s) attachée(s).classement
affiche le classement des facultés en fonction du nombre de documents existants ; avec la taille du classement comme paramètre.print_cat()
affiche les catégories éponymes.n_dpt_fac
affiche le nombre de départements recensé dans l’espace de noms Faculté.nombre_de_facultes
affiche le nombre de facultés.
Librairies : Module:Nsm/Lib, Module:Nsm/Lib/Sub, Module:Nsm/Lib/Sortable class, Module:Nsm/Lib/Category
Documentation du Module:Nsm/Faculté : v · d · m · h.
local p = require("Module:Nsm/Lib") -- Bibliothèque NameSpace Monitor
local import = require("Module:Nsm/Table/106") -- Tables Lua via Python
local import_talk = require("Module:Nsm/Table/107") -- talkpages tables
-- Librairies
local import_tri = require("Module:Lib_table_tri") -- Fonctions tri spairs
-- Table département
local import_dpt = require("Module:Nsm/Table/108") -- Table des départements
-- Variables
t_prop = import.t_prop -- Propriétés de l'espace
label = t_prop.label -- Label de l'espace
t_pages = import.t_pages -- Table pages faculté
t_dpt_fac = import.t_dpt_fac -- Table inverse
talk_prop = import_talk.t_prop -- ns talk properties
talk_pages = import_talk.t_talkpages -- talk pages table
talk_label = talk_prop.label -- Label espace discussion
lang = t_prop.lang -- GLOBAL pour lnk(var)
t_root = ns_root_only(t_pages) -- Pages racines (avec redir)
t_sub = ns_subpages_only(t_pages)
pfix = prefix(lang, label) -- Prefixe des pages de l'espace
local ns_departement = import_dpt.t_pages -- table des départements
-- SOUS-FONCTIONS
function get_dpt_in(fac, l_dpt) --[[ Reçoit page de faculté et liste des dpt ; retourne table des départements ajoute le champ fac.]]--
local tr = {} -- table résultat
for kd, dpt in pairs(l_dpt) do -- pour chaque dpt dans la liste de la fac
for kdpt, departement in pairs(ns_departement) do -- table pages dept
if departement.page == dpt then -- si les titres sont equivalents
departement['fac'] = fac -- Ajoute le titre de la faculté
tr[kdpt] = ns_departement[kdpt] -- construire table
end end end
return tr
end
function fac_sum_links(t) -- Retourne la somme des liens par faculté - Voir classement()
for k, fac in pairs(t) do
local c = 0 --Compteur de lien
local fdpt = {} -- départements ventilés par faculté
fdpt = get_dpt_in(fac.page, fac.l_dpt) --SUB FX
for kf, dpt in pairs(fdpt) do c = c + dpt.n_exist end -- additionne
fac['liens'] = c -- Ajoute la somme des liens
end
return t
end
-- FONCTIONS
function p.classement_test(frame)
local t_in = {} -- Table en entrée
t_in = fac_sum_links(t_root) -- Calcul la somme des liens
table.sort(t_in)
--return st_print(t_in, col) --r, '-i'
local t_seq = {} -- Table en sortie
for k, v in pairs(t_in) do table.insert(t_seq, v) end -- SEQUENCE
t_out = {}
for k, v in pairs(t_seq) do t_out[k] = v.liens end -- table simple index | liens
table.sort(t_out, function(a, b) return a > b end)
local result = {}
local col = {'page', 'liens'}
return st_print(result, col)
end
function p.classement(frame) -- RELIRE Classement des facultés selon les liens des départements SIMPLIFIER :-P
local t_in = {} -- Table en entrée
t_in = fac_sum_links(t_root) -- Calcul la somme des liens
t_out = {} -- Table en sortie
for k, v in pairs(t_in) do -- chaque page en entrée
t_out[v.page] = v.liens end -- table simple page | liens
local t_classement = t_out -- change nom variable
local c = 0 -- compteur d'occurrences
local st_classement = {} -- Table...
for k, v in spairs(t_classement, function(t,a,b) return t[b] < t[a] end) do
c = c + 1
st_classement[c] = {k, v}
end
if frame.args[1] ~= nil then limite = tonumber(frame.args[1]) else limite = table.maxn(st_classement) end
local t = {}
for i, v in ipairs(st_classement) do
if i <= limite then
tv = {}
tv['page'] = v[1]
tv['liens'] = v[2]
table.insert(t, tv)
end end
local col = {'page', 'liens'}
return st_print(t, col) --r, '-i'
end
function p.liens(frame) -- liens(|fac) Affiche les liens existants ventilés par département. Argument1 filtre les facultés.
--if frame.args[1] ~= nil then motif = pfix .. frame.args[1] else motif ='' end
local result = ''
if frame.args['nom'] then motif = frame.args['nom']
result = result .. motif .. '\n' end
--local motif = frame.args['nom']
local t_dpt = pages(t_root, motif) -- Filtre selon argument1
t_dpt = liens(t_dpt) --
local col = {'fac', 'page', 'l_exist', 'n_exist'}
result = result .. st_print(t_dpt, col, '-i')
return result --
end
function liens(t) -- Reçoit table de facultés ; Retourne table des départements ventilés par faculté.
local tr = {} -- Table des résultats
for k, fac in pairs(t) do -- Chaque faculté
local fdpt = {} -- Liste départements associés
fdpt = get_dpt_in(fac.page, fac.l_dpt) -- retourne les dpt associés aux facultés
for k, v in pairs(fdpt) do tr[k] = fdpt[k] end -- Ajoute aux résultats
end
return tr -- Retourne pages départements associés aux facultés
end
function p.departement(frame) -- Affiche les département et le(s) liens(s) vers la(les) facultés. L'argument |multiple filtre les départements attachés à plusieurs facultés.
local t_out = t_dpt_fac
if frame.args[1] == 'multiple' then
t_out = {} -- Filtre des départements multiples
for k, v in pairs(t_dpt_fac) do
if v.n_fac > 1 then t_out[k] = t_dpt_fac[k] end end end
local module_name = frame:getTitle() -- Nom du module qui appel via frame
local col = {'page', 'n_fac', 'l_fac'} -- 'l_exist' pas disponible
local result = lnk(module_name) .. '\n' .. st_print(t_out, col, '-i')
return result
end
function p.n_dpt_fac() -- Option de sortie pour main fx Voir p.departement(frame)
local n_dpt_fac = table.maxn(t_dpt_fac)
return n_dpt_fac
end
function p.fac_dpt() --[[Nlle version imprime une section par faculté contenat un tableau des départements. RENOMMER Il faudrait pouvoir filtrer par faculté]]--
local r = ''
for k, fac in pairs(t_root) do
local fdpt = {}
fdpt = get_dpt_in(fac.page, fac.l_dpt) --SUB FX
r = r .. '==[[' ..fac.page .. ']]' ..' ==\n'
r = r.. 'La faculté hébèrge, ' .. tostring(fac.n_dpt) ..' département(s).' .. '\n'
local col = {'page'} -- 'l_exist' NOMBRE POUR CHAQUE Liste VIA PYTHON !
r = r .. st_print(fdpt, col, '-i') ..'\n'
end
return r
end
function p.nombre_de_facultes() --Affiche le nombre de facultés
local n_fac = t_prop.racine
return n_fac
end
return p