Aller au contenu

Module:Episode/test

De Stargate Wiki Sémantique
Version datée du 2 juin 2026 à 19:15 par LIMAFOX76 (discussion | contributions) (Page créée avec « ------------------------------------------------------------ -- 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 ------------------------------------------------------------ loc... »)
(diff) ← Version précédente | Version actuelle (diff) | Version suivante → (diff)
Documentation icon Documentation module[créer]
------------------------------------------------------------
-- 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)
        if a.series == b.series then
            if tonumber(a.season) == tonumber(b.season) then
                return tonumber(a.episode) < tonumber(b.episode)
            end
            return tonumber(a.season) < tonumber(b.season)
        end
        return a.series < b.series
    end)
end

------------------------------------------------------------
-- Génération du tableau wiki
------------------------------------------------------------
local function render_table(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,
            ep.season,
            ep.episode,
            ep.id,
            ep.title_fr or "",
            ep.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(list)
end

return p