Module:Marquage 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 = {}
-- Normalisation en minuscules + trim
local function normalize(val)
if not val then
return ""
end
val = mw.ustring.lower(val)
val = mw.text.trim(val)
return val
end
-- Table des alias → catégories
local alias = {
-- Principal
m = "principal",
main = "principal",
["main character"] = "principal",
p = "principal",
principal = "principal",
["personnage principal"] = "principal",
-- Secondaire
s = "secondaire",
su = "secondaire",
supporting = "secondaire",
["supporting character"] = "secondaire",
se = "secondaire",
secondaire = "secondaire",
ps = "secondaire",
["personage secondaire"] = "secondaire",
-- Récurrent
re = "recurrent",
recurring = "recurrent",
["recurring character"] = "recurrent",
["récurrent"] = "recurrent",
["personnage récurrent"] = "recurrent",
-- One-shot
os = "oneshot",
["one shot"] = "oneshot",
["one shot character"] = "oneshot",
["one-shot"] = "oneshot",
["personnage one shot"] = "oneshot",
-- Mineur
mi = "mineur",
minor = "mineur",
["minor character"] = "mineur",
mineur = "mineur",
["personnage mineur"] = "mineur",
-- Booléens (yes/true)
y = "true",
yes = "true",
t = "true",
["true"] = "true",
o = "true",
oui = "true",
v = "true",
vrai = "true",
-- Mentionné
me = "mention",
men = "mention",
mention = "mention",
mentioned = "mention",
["mentionné"] = "mention",
-- Photo seule
picture = "photo",
photo = "photo",
-- Voix seule
voice = "voix",
voix = "voix",
["voix seule"] = "voix",
-- Scènes supprimées
del = "deleted",
["deleted scenes"] = "deleted",
sup = "deleted",
supp = "deleted",
["scène supprimée"] = "deleted",
["scènes supprimées"] = "deleted",
-- Flashbacks
flash = "flashback",
flashback = "flashback",
-- Nom uniquement
name = "nom",
nom = "nom",
}
-- Messages finaux
local messages = {
principal = "",
secondaire = "",
recurrent = "",
oneshot = "",
mineur = "",
["true"] = "",
mention = " (mention%s)",
photo = " (photo seule%s)",
voix = " (voix seule%s)",
deleted = " (scènes supprimées%s)",
flashback = " (flashbacks%s)",
nom = " (nom uniquement%s)",
}
-- Fonction principale
function p.main(frame)
local arg1 = normalize(frame.args[1])
local arg2 = frame.args[2] or ""
local arg3 = frame.args[3] or ""
local key = alias[arg1]
-- Cas par défaut : renvoyer "(décédé)" si arg2 == arg3
if not key then
if arg2 == arg3 then
return " (décédé)"
end
return ""
end
local base = messages[key] or ""
-- Ajout ", décédé" si arg2 == arg3
local deceased = ""
if arg2 == arg3 then
deceased = ", décédé"
end
return base:format(deceased)
end
return p