Aller au contenu

« Module:Episode/test » : différence entre les versions

De Stargate Wiki Sémantique
Contenu supprimé Contenu ajouté
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... »
 
Aucun résumé des modifications
 
Ligne 26 : Ligne 26 :
-- Génération du tableau wiki
-- Génération du tableau wiki
------------------------------------------------------------
------------------------------------------------------------
local function render_table(list)
local function render_table(frame, list)
local out = {}
local out = {}


Ligne 40 : Ligne 40 :
ep.episode,
ep.episode,
ep.id,
ep.id,
ep.title_fr or "",
frame:preprocess(ep.title_fr or ""), -- ✔ modèles interprétés
ep.title_en or "",
frame:preprocess(ep.title_en or ""), -- ✔ idem
table.concat(ep.aliases or {}, "<br>")
table.concat(ep.aliases or {}, "<br>")
))
))
Ligne 65 : Ligne 65 :


-- Rendre le tableau
-- Rendre le tableau
return render_table(list)
return render_table(frame, list)
end
end



Dernière version du 2 juin 2026 à 19:33

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(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,
            ep.season,
            ep.episode,
            ep.id,
            frame:preprocess(ep.title_fr or ""),   -- ✔ modèles interprétés
            frame:preprocess(ep.title_en or ""),   -- ✔ idem
            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