Aller au contenu

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

De Stargate Wiki Sémantique
Contenu supprimé Contenu ajouté
Page créée avec « -- Module:Episode/Shared/Utils local p = {} -- Normalize alias: lowercase, remove quotes/apostrophes, replace common accents, collapse spaces function p.normalize_alias(s) if not s then return nil end local u = mw.ustring.lower(s) u = mw.ustring.gsub(u, "[\"'`]", "") local accents = { ["à"]="a", ["á"]="a", ["â"]="a", ["ä"]="a", ["ã"]="a", ["å"]="a", ["ç"]="c", ["è"]="e", ["é"]="e", ["ê"]="e", ["ë"]="e",... »
 
Aucun résumé des modifications
 
Ligne 1 : Ligne 1 :
-- Module:Episode/Shared/Utils
-- Module:Episode/Shared/Utils
-- Fonctions utilitaires communes à tous les modules Episode :
local p = {}
-- * normalisation des alias
-- * validation minimale des entrées d’épisodes
-- * nettoyage des chaînes


local utils = {}
-- Normalize alias: lowercase, remove quotes/apostrophes, replace common accents, collapse spaces

function p.normalize_alias(s)
------------------------------------------------------------
-- Normalisation d’un alias
-- * minuscules
-- * suppression des apostrophes et guillemets
-- * remplacement des accents
-- * réduction des espaces
-- * trim
------------------------------------------------------------
function utils.normalize_alias(s)
if not s then return nil end
if not s then return nil end

-- Mise en minuscules
local u = mw.ustring.lower(s)
local u = mw.ustring.lower(s)

u = mw.ustring.gsub(u, "[\"'`]", "")
-- Suppression des apostrophes et guillemets
u = mw.ustring.gsub(u, "[\"'`´’]", "")

-- Remplacement des accents
local accents = {
local accents = {
["à"]="a", ["á"]="a", ["â"]="a", ["ä"]="a", ["ã"]="a", ["å"]="a",
["à"]="a", ["á"]="a", ["â"]="a", ["ä"]="a", ["ã"]="a", ["å"]="a",
Ligne 19 : Ligne 37 :
u = mw.ustring.gsub(u, a, b)
u = mw.ustring.gsub(u, a, b)
end
end

-- Réduction des espaces
u = mw.ustring.gsub(u, "%s+", " ")
u = mw.ustring.gsub(u, "%s+", " ")

-- Trim
u = mw.ustring.gsub(u, "^%s*(.-)%s*$", "%1")
u = mw.ustring.gsub(u, "^%s*(.-)%s*$", "%1")

return u
return u
end
end


------------------------------------------------------------
-- Validate episode entry minimal shape
-- Validation minimale d’une entrée d’épisode
function p.validate_episode(ep)
-- Vérifie que les champs essentiels sont présents.
if type(ep) ~= "table" then return false end
------------------------------------------------------------
if not ep.id or not ep.season or not ep.episode then return false end
function utils.validate_episode(ep)
if type(ep) ~= "table" then
return false, "Entrée non-table"
end
if not ep.id then
return false, "Champ .id manquant"
end
-- season et episode peuvent être absents pour les films
return true
return true
end
end


------------------------------------------------------------
return p
-- Nettoyage simple d’une chaîne (trim + collapse spaces)
------------------------------------------------------------
function utils.clean_string(s)
if not s then return "" end
local u = mw.ustring.gsub(s, "%s+", " ")
u = mw.ustring.gsub(u, "^%s*(.-)%s*$", "%1")
return u
end

return utils

Dernière version du 1 juin 2026 à 20:36

Documentation icon Documentation module[créer]
-- Module:Episode/Shared/Utils
-- Fonctions utilitaires communes à tous les modules Episode :
--  * normalisation des alias
--  * validation minimale des entrées d’épisodes
--  * nettoyage des chaînes

local utils = {}

------------------------------------------------------------
-- Normalisation d’un alias
--  * minuscules
--  * suppression des apostrophes et guillemets
--  * remplacement des accents
--  * réduction des espaces
--  * trim
------------------------------------------------------------
function utils.normalize_alias(s)
    if not s then return nil end

    -- Mise en minuscules
    local u = mw.ustring.lower(s)

    -- Suppression des apostrophes et guillemets
    u = mw.ustring.gsub(u, "[\"'`´’]", "")

    -- Remplacement des accents
    local accents = {
        ["à"]="a", ["á"]="a", ["â"]="a", ["ä"]="a", ["ã"]="a", ["å"]="a",
        ["ç"]="c",
        ["è"]="e", ["é"]="e", ["ê"]="e", ["ë"]="e",
        ["ì"]="i", ["í"]="i", ["î"]="i", ["ï"]="i",
        ["ò"]="o", ["ó"]="o", ["ô"]="o", ["ö"]="o", ["õ"]="o",
        ["ù"]="u", ["ú"]="u", ["û"]="u", ["ü"]="u",
        ["œ"]="oe", ["æ"]="ae",
    }
    for a,b in pairs(accents) do
        u = mw.ustring.gsub(u, a, b)
    end

    -- Réduction des espaces
    u = mw.ustring.gsub(u, "%s+", " ")

    -- Trim
    u = mw.ustring.gsub(u, "^%s*(.-)%s*$", "%1")

    return u
end

------------------------------------------------------------
-- Validation minimale d’une entrée d’épisode
-- Vérifie que les champs essentiels sont présents.
------------------------------------------------------------
function utils.validate_episode(ep)
    if type(ep) ~= "table" then
        return false, "Entrée non-table"
    end
    if not ep.id then
        return false, "Champ .id manquant"
    end
    -- season et episode peuvent être absents pour les films
    return true
end

------------------------------------------------------------
-- Nettoyage simple d’une chaîne (trim + collapse spaces)
------------------------------------------------------------
function utils.clean_string(s)
    if not s then return "" end
    local u = mw.ustring.gsub(s, "%s+", " ")
    u = mw.ustring.gsub(u, "^%s*(.-)%s*$", "%1")
    return u
end

return utils