« Module:Type d'apparition » : différence entre les versions
Apparence
Contenu supprimé Contenu ajouté
Page créée avec « local p = {} local types = { -- Main character 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 ", -- Supporting character supporting = "Personnage secondaire de ", ["supporting character"] = "Personn... » |
Aucun résumé des modifications |
||
| (Une version intermédiaire par le même utilisateur non affichée) | |||
| Ligne 1 : | Ligne 1 : | ||
local p = {} |
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 "" |
|||
| ⚫ | |||
-- 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 |
|||
| ⚫ | |||
-- 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 = { |
local types = { |
||
-- |
-- Personnage principal |
||
main = "Personnage principal de ", |
["main"] = "Personnage principal de ", |
||
["main character"] = "Personnage principal de ", |
["main character"] = "Personnage principal de ", |
||
m = "Personnage principal de ", |
["m"] = "Personnage principal de ", |
||
ma = "Personnage principal de ", |
["ma"] = "Personnage principal de ", |
||
p = "Personnage principal de ", |
["p"] = "Personnage principal de ", |
||
principal = "Personnage principal de ", |
["principal"] = "Personnage principal de ", |
||
["personnage principal"] = "Personnage principal de ", |
["personnage principal"] = "Personnage principal de ", |
||
| ⚫ | |||
-- Supporting character |
|||
supporting = "Personnage secondaire de ", |
["supporting"] = "Personnage secondaire de ", |
||
["supporting character"] = "Personnage secondaire de ", |
["supporting character"] = "Personnage secondaire de ", |
||
s = "Personnage secondaire de ", |
["s"] = "Personnage secondaire de ", |
||
su = "Personnage secondaire de ", |
["su"] = "Personnage secondaire de ", |
||
se = "Personnage secondaire de ", |
["se"] = "Personnage secondaire de ", |
||
secondaire = "Personnage secondaire de ", |
["secondaire"] = "Personnage secondaire de ", |
||
ps = "Personnage secondaire de ", |
["ps"] = "Personnage secondaire de ", |
||
["personnage secondaire"] = "Personnage secondaire de ", |
["personnage secondaire"] = "Personnage secondaire de ", |
||
-- Récurrent |
|||
-- Reccuring character |
|||
recurring = "Personnage récurrent de ", |
["recurring"] = "Personnage récurrent de ", |
||
["recurring character"] = "Personnage récurrent de ", |
["recurring character"] = "Personnage récurrent de ", |
||
re = "Personnage récurrent de ", |
["re"] = "Personnage récurrent de ", |
||
[" |
["recurrent"] = "Personnage récurrent de ", |
||
[" |
["recurent"] = "Personnage récurrent de ", |
||
| ⚫ | |||
-- One shot |
|||
["one shot"] = "Personnage one shot de ", |
["one shot"] = "Personnage one shot de ", |
||
| ⚫ | |||
["one shot character"] = "Personnage one shot de ", |
["one shot character"] = "Personnage one shot de ", |
||
guest = "Personnage one shot de ", |
["guest"] = "Personnage one shot de ", |
||
os = "Personnage one shot de ", |
["os"] = "Personnage one shot de ", |
||
g = "Personnage one shot de ", |
["g"] = "Personnage one shot de ", |
||
["personnage one shot"] = "Personnage one shot de ", |
["personnage one shot"] = "Personnage one shot de ", |
||
-- Mineur |
|||
-- Minor character |
|||
minor = "Personnage mineur de ", |
["minor"] = "Personnage mineur de ", |
||
["minor character"] = "Personnage mineur de ", |
["minor character"] = "Personnage mineur de ", |
||
mi = "Personnage mineur de ", |
["mi"] = "Personnage mineur de ", |
||
["mineur"] = "Personnage mineur de ", |
|||
["personnage mineur"] = "Personnage mineur de ", |
["personnage mineur"] = "Personnage mineur de ", |
||
| ⚫ | |||
-- Présence générique |
-- Présence générique |
||
yes = "Apparaît dans ", |
["yes"] = "Apparaît dans ", |
||
[ |
["true"] = "Apparaît dans ", |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
["#default"] = "Apparaît dans ", |
["#default"] = "Apparaît dans ", |
||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
| ⚫ | |||
-- Mention |
-- Mention |
||
mention = "Mentionné dans ", |
["mention"] = "Mentionné dans ", |
||
mentioned = "Mentionné dans ", |
["mentioned"] = "Mentionné dans ", |
||
me = "Mentionné dans ", |
["me"] = "Mentionné dans ", |
||
men = "Mentionné dans ", |
["men"] = "Mentionné dans ", |
||
[" |
["mentionne"] = "Mentionné dans ", |
||
-- |
-- Photo seule |
||
picture = "Photo seule dans ", |
["picture"] = "Photo seule dans ", |
||
photo = "Photo seule dans ", |
["photo"] = "Photo seule dans ", |
||
["photo seule"] = "Photo seule dans ", |
["photo seule"] = "Photo seule dans ", |
||
-- |
-- Voix seule |
||
voice = "Voix seule dans ", |
["voice"] = "Voix seule dans ", |
||
voix = "Voix seule dans ", |
["voix"] = "Voix seule dans ", |
||
-- |
-- Corps visible |
||
body = "Corps visible dans", |
["body"] = "Corps visible dans ", |
||
corpse = "Corps visible dans", |
["corpse"] = "Corps visible dans ", |
||
corps = "Corps visible dans", |
["corps"] = "Corps visible dans ", |
||
cadavre = "Corps visible dans", |
["cadavre"] = "Corps visible dans ", |
||
-- |
-- Scènes supprimées |
||
["deleted scenes"] = "Apparaît uniquement dans les scènes supprimées de ", |
["deleted scenes"] = "Apparaît uniquement dans les scènes supprimées de ", |
||
del = "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 ", |
["sup"] = "Apparaît uniquement dans les scènes supprimées de ", |
||
supp = "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 ", |
["flash"] = "Apparaît uniquement dans des flashbacks de ", |
||
flashback = "Apparaît uniquement dans des flashbacks de ", |
["flashback"] = "Apparaît uniquement dans des flashbacks de ", |
||
flashbacks = "Apparaît uniquement dans des flashbacks de ", |
["flashbacks"] = "Apparaît uniquement dans des flashbacks de ", |
||
| ⚫ | |||
-- |
-- Nom visible |
||
name = "Nom visible dans ", |
["name"] = "Nom visible dans ", |
||
nom = "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"] |
return types[param] or types["#default"] |
||
end |
|||
---------------------------------------------------------------------- |
|||
-- 5) Fonction publique |
|||
---------------------------------------------------------------------- |
|||
| ⚫ | |||
local raw = frame.args[1] or "yes" |
|||
local key = normalize(raw) |
|||
return safe_get(key) |
|||
end |
end |
||
Dernière version du 16 juin 2026 à 19:14
| 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