« Module:Référence » : différence entre les versions
mAucun résumé des modifications |
Aucun résumé des modifications |
||
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
local p = {} | 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) | |||
function | |||
if lang ~= | |||
return "'' | |||
else | else | ||
return sentence | return sentence | ||
Ligne 13 : | Ligne 10 : | ||
end | end | ||
function | -- Retourne les arguments entrés par l'utilisateur | ||
function get_args(frame) | |||
local args = {} | local args = {} | ||
Ligne 26 : | Ligne 24 : | ||
end | end | ||
---- | -- Génère une référence mise en forme automatiquement en | ||
-- fonction du type sélectionné par l'utilisateur. | |||
function p._dialogue(args) | |||
local lang = args["langue"] or "fr" | |||
local source = args["source"] | |||
local | if not source then | ||
error("Paramètre source absent") | |||
if not | |||
end | end | ||
local game = args["jeu"] | |||
local | if game then | ||
if | game = require("Module:Abréviation").name(game) | ||
if not game or game == "" then | |||
error("Valeur inconnue du paramètre jeu") | |||
end | |||
else | else | ||
error("Paramètre jeu absent") | |||
end | end | ||
local | local characters = {} | ||
local character | |||
for i = 1, 6 do | |||
character = args['personnage' .. i] | |||
if | if not character then | ||
break | |||
end | end | ||
table.insert(characters, character) | |||
local | 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 | 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 | |||
if | error("Personnage non reconnu") | ||
end | 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 | end | ||
sentences = '<ul class="reference-dial">' .. sentences .. "</ul>" | |||
local header = string.format( | |||
return | "Conversation extraite du fichier %s, ''[[%s]]''.", | ||
source, | |||
game | |||
) | |||
return header .. sentences | |||
end | end | ||
function p. | function p.dialogue(frame) | ||
return p._dialogue(get_args(frame)) | |||
return p. | |||
end | end | ||
return p | return p |
Dernière version du 5 février 2023 à 20:56
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(args)
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(
"Conversation extraite du fichier %s, ''[[%s]]''.",
source,
game
)
return header .. sentences
end
function p.dialogue(frame)
return p._dialogue(get_args(frame))
end
return p