« Module:Episode/test » : différence entre les versions
Apparence
Aucun résumé des modifications |
m LIMAFOX76 a déplacé la page Module:Episode/test vers Module:Episode REAL/test sans laisser de redirection |
||
(Aucune différence)
| |||
Version du 3 juin 2026 à 14:15
| Il sera peut-être nécessaire de créer une page documentation pour ce module Scribunto programmé dans la page créer Les éditeurs peuvent faire des tests sur les pages bac à sable (créer | miroir) et études de cas (créer) du module. Veuillez ajouter les catégories dans la sous-page /documentation. Sous-pages de ce module. |
------------------------------------------------------------
-- Module:Episode/test
-- Affiche tous les épisodes de toutes les séries
-- Utilise Module:Episode/MultiSeries
------------------------------------------------------------
local p = {}
local Multi = require("Module:Episode/MultiSeries")
------------------------------------------------------------
-- Tri : série → saison → épisode
------------------------------------------------------------
local function sort_episodes(list)
table.sort(list, function(a, b)
-- 1. Trier par série
if a.series ~= b.series then
return a.series < b.series
end
-- 2. Détection films (pas de saison)
local a_is_film = (a.season == nil)
local b_is_film = (b.season == nil)
-- 3. Si un seul est un film → les films après les épisodes
if a_is_film and not b_is_film then return false end
if b_is_film and not a_is_film then return true end
-- 4. Si les deux sont des films → tri par titre FR
if a_is_film and b_is_film then
return (a.title_fr or a.page_title_fr or a.id)
< (b.title_fr or b.page_title_fr or b.id)
end
-- 5. Tri normal séries : saison → épisode
local sa = tonumber(a.season)
local sb = tonumber(b.season)
if sa ~= sb then
return sa < sb
end
return tonumber(a.episode) < tonumber(b.episode)
end)
end
------------------------------------------------------------
-- Génération du tableau wiki
------------------------------------------------------------
local function render_table(frame, list)
local out = {}
table.insert(out, '{| class="wikitable sortable" style="width:100%"')
table.insert(out, "! Série !! Saison !! Épisode !! ID !! Titre FR !! Titre EN !! Alias (normalisés)")
for _, ep in ipairs(list) do
table.insert(out, "|-")
table.insert(out, string.format(
"| %s || %s || %s || %s || %s || %s || %s",
ep.series or "",
ep.season or "",
ep.episode or "",
ep.id or "",
frame:preprocess(ep.title_fr or ep.page_title_fr or ""),
frame:preprocess(ep.title_en or ep.page_title_en or ""),
table.concat(ep.aliases or {}, "<br>")
))
end
table.insert(out, "|}")
return table.concat(out, "\n")
end
------------------------------------------------------------
-- Fonction principale #invoke
------------------------------------------------------------
function p.all(frame)
local list = {}
-- Copier la liste complète
for _, ep in ipairs(Multi.episodes) do
table.insert(list, ep)
end
-- Trier
sort_episodes(list)
-- Rendre le tableau
return render_table(frame, list)
end
return p