Module:Type d'apparition
Apparence
| 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. |
local p = {}
----------------------------------------------------------------------
-- 1) Nettoyage UTF‑8 : supprime les séquences invalides AVANT tout
-- traitement Unicode (anti-crash mw.ustring.match / gsub / find)
----------------------------------------------------------------------
local function safe_utf8(str)
if type(str) ~= "string" then
return ""
end
-- Remplace toute séquence UTF‑8 invalide par un espace
str = mw.ustring.gsub(str, "[^\0-\x7F\xC2-\xF4][\x80-\xBF]*", " ")
return str
end
----------------------------------------------------------------------
-- 2) Normalisation avancée : trim, minuscules, accents, tirets, espaces
----------------------------------------------------------------------
local function normalize(str)
str = safe_utf8(str or "")
-- Trim
str = mw.text.trim(str)
-- Minuscules Unicode
str = mw.ustring.lower(str)
-- Tirets / underscores → espace
str = str:gsub("[%-%_]", " ")
-- Décomposition Unicode
str = mw.ustring.toNFD(str)
-- Suppression des diacritiques
str = str:gsub("[%pM]", "")
-- Espaces multiples
str = str:gsub("%s+", " ")
return str
end
----------------------------------------------------------------------
-- 3) Table des types
----------------------------------------------------------------------
local types = {
-- Personnage principal
["main"] = "Personnage principal de ",
["main character"] = "Personnage principal de ",
["m"] = "Personnage principal de ",
["ma"] = "Personnage principal de ",
["p"] = "Personnage principal de ",
["principal"] = "Personnage principal de ",
["personnage principal"] = "Personnage principal de ",
-- Personnage secondaire
["supporting"] = "Personnage secondaire de ",
["supporting character"] = "Personnage secondaire de ",
["s"] = "Personnage secondaire de ",
["su"] = "Personnage secondaire de ",
["se"] = "Personnage secondaire de ",
["secondaire"] = "Personnage secondaire de ",
["ps"] = "Personnage secondaire de ",
["personnage secondaire"] = "Personnage secondaire de ",
-- Récurrent
["recurring"] = "Personnage récurrent de ",
["recurring character"] = "Personnage récurrent de ",
["re"] = "Personnage récurrent de ",
["recurrent"] = "Personnage récurrent de ",
["recurent"] = "Personnage récurrent de ",
["personnage recurrent"] = "Personnage récurrent de ",
-- One shot
["one shot"] = "Personnage one shot de ",
["one shot character"] = "Personnage one shot de ",
["guest"] = "Personnage one shot de ",
["os"] = "Personnage one shot de ",
["g"] = "Personnage one shot de ",
["personnage one shot"] = "Personnage one shot de ",
-- Mineur
["minor"] = "Personnage mineur de ",
["minor character"] = "Personnage mineur de ",
["mi"] = "Personnage mineur de ",
["mineur"] = "Personnage mineur de ",
["personnage mineur"] = "Personnage mineur de ",
-- Présence générique
["yes"] = "Apparaît dans ",
["true"] = "Apparaît dans ",
["y"] = "Apparaît dans ",
["t"] = "Apparaît dans ",
["o"] = "Apparaît dans ",
["oui"] = "Apparaît dans ",
["v"] = "Apparaît dans ",
["vrai"] = "Apparaît dans ",
["#default"] = "Apparaît dans ",
-- Mention
["mention"] = "Mentionné dans ",
["mentioned"] = "Mentionné dans ",
["me"] = "Mentionné dans ",
["men"] = "Mentionné dans ",
["mentionne"] = "Mentionné dans ",
-- Photo seule
["picture"] = "Photo seule dans ",
["photo"] = "Photo seule dans ",
["photo seule"] = "Photo seule dans ",
-- Voix seule
["voice"] = "Voix seule dans ",
["voix"] = "Voix seule dans ",
-- Corps visible
["body"] = "Corps visible dans ",
["corpse"] = "Corps visible dans ",
["corps"] = "Corps visible dans ",
["cadavre"] = "Corps visible dans ",
-- Scènes supprimées
["deleted scenes"] = "Apparaît uniquement dans les scènes supprimées de ",
["del"] = "Apparaît uniquement dans les scènes supprimées de ",
["sup"] = "Apparaît uniquement dans les scènes supprimées de ",
["supp"] = "Apparaît uniquement dans les scènes supprimées de ",
["scene supprimee"] = "Apparaît uniquement dans les scènes supprimées de ",
["scenes supprimees"] = "Apparaît uniquement dans les scènes supprimées de ",
-- Flashbacks
["flash"] = "Apparaît uniquement dans des flashbacks de ",
["flashback"] = "Apparaît uniquement dans des flashbacks de ",
["flashbacks"] = "Apparaît uniquement dans des flashbacks de ",
-- Nom visible
["name"] = "Nom visible dans ",
["nom"] = "Nom visible dans ",
}
----------------------------------------------------------------------
-- 4) Récupération sécurisée
----------------------------------------------------------------------
local function safe_get(param)
return types[param] or types["#default"]
end
----------------------------------------------------------------------
-- 5) Fonction publique
----------------------------------------------------------------------
function p.render(frame)
local raw = frame.args[1] or "yes"
local key = normalize(raw)
return safe_get(key)
end
return p