Module:Référence
La documentation pour ce module peut être créée à Module:Référence/doc
local p = {}
-- Adapte le style de la citation en fonction de la langue
function sentence_lang(sentence, lang)
if lang ~= "fr" then
return string.format("''%s''", sentence)
else
return sentence
end
end
-- Retourne les arguments entrés par l'utilisateur
function get_args(frame)
local args = {}
local argsParent = frame:getParent().args
for cle, val in pairs(argsParent) do
if val then
args[cle] = mw.text.trim(val)
end
end
return args
end
-- Génère une référence mise en forme automatiquement en
-- fonction du type sélectionné par l'utilisateur.
function p.dialogue(frame)
local args = get_args(frame)
-- Paramètres d'identification et de regroupement
-- de la référence
local attributes = {
name = args["nom"],
group = args["groupe"],
}
local lang = args["langue"] or "fr"
local source = args["source"]
if not source then
error("Paramètre source absent")
end
local game = args["jeu"]
if game then
game = require("Module:Abréviation").name(game)
if not game or game == "" then
error("Valeur inconnue du paramètre jeu")
end
else
error("Paramètre jeu absent")
end
local characters = {}
local character
for i = 1, 6 do
character = args['personnage' .. i]
if not character then
break
end
table.insert(characters, character)
end
if #characters == 0 then
error("Paramètre personnage absent")
end
local sentences = ""
local sentence
local character_index
-- Maximum de 10 phrases possibles
for i = 1, 10 do
-- phrasei.p indique l'index du personnage
-- phrasei.p indique le texte
character_index = args[string.format("phrase%d.p", i)]
sentence = args[string.format("phrase%d.t", i)]
if not sentence or not character_index then
break
end
character_index = tonumber(character_index)
if not character_index then
error(string.format("Paramètre phrase%d.p doit être un nombre", i))
end
character = characters[character_index]
if not character then
error("Personnage non reconnu")
end
sentences = sentences .. tostring(mw.html.create("li")
:addClass("reference-dial-row")
:tag("span")
:addClass("reference-dial-character")
:wikitext(character .. " — ")
:done()
:tag("span")
:addClass("reference-dial-text")
:wikitext(sentence_lang(sentence, lang))
:done()
:allDone()
)
end
if sentences == "" then
error("Paramètre phrase absent")
end
sentences = '<ul class="reference-dial">' .. sentences .. "</ul>"
local header = string.format(
"<p>Conversation extraite du fichier %s, ''[[%s]]''.</p>",
source,
game
)
local content = header .. sentences
return tostring(mw.getCurrentFrame():extensionTag( 'ref', content, attributes ))
end
return p