« Module:Tableau d'artisanat » : différence entre les versions

De Les Archives de Vault-Tec
Kharmitch (discussion | contributions)
mAucun résumé des modifications
Kharmitch (discussion | contributions)
Aucun résumé des modifications
Ligne 15 : Ligne 15 :
local parametres = {
local parametres = {
materiau = {
materiau = {
nom = { 'matériau', 'material'},
nom = 'matériau',
qte = { 'matériau#', 'matcnt'}
qte = 'matériau#'
},
},
produit = {
produit = {
nom = { 'produit', 'product'},
nom = 'produit',
qte = { 'produit#', 'product#'}
qte = 'produit#'
}
}
}
}
Ligne 28 : Ligne 28 :
for i = 1, n_liste do
for i = 1, n_liste do
local materiau = args[param.nom[1] .. i] or args[param.nom[2] .. i] or ''
local materiau = args[param.nom .. i]
if materiau == '' then break end
if not materiau then
break
end
local quantite = args[param.qte[1] .. i] or args[param.qte[2] .. i] or '1'
local quantite = args[param.qte .. i] or '1'
local item = mw.html.create('li')
local item = mw.html.create('li')
Ligne 57 : Ligne 59 :
local items = ''
local items = ''
local atelier = args['poste de travail'] or args['workspace'] or ''
local atelier = args['poste de travail']
if atelier ~= '' then
if atelier then
local item = mw.html.create('li')
local item = mw.html.create('li')
:wikitext(atelier)
:wikitext(atelier)
Ligne 65 : Ligne 67 :
end
end
local saison = args['saison'] or args['season'] or ''
local saison = args['saison']
if saison ~= '' then
if saison then
local item = mw.html.create('li')
local item = mw.html.create('li')
:wikitext(saison)
:wikitext(saison)
Ligne 73 : Ligne 75 :
end
end
local recette = args['recette'] or args['plan'] or ''
local recette = args['recette']
if recette ~= '' then
if recette then
local item = mw.html.create('li')
local item = mw.html.create('li')
:wikitext(recette)
:wikitext(recette)
Ligne 81 : Ligne 83 :
end
end
local competence = args['compétence'] or args['skill'] or ''
local competence = args['compétence']
if competence ~= '' then
if competence then
local niveau = args['niveau'] or args['level'] or 'niveau ?'
local niveau = args['niveau'] or 'niveau ?'
local item = mw.html.create('li')
local item = mw.html.create('li')
:wikitext(competence .. ' : ' .. niveau)
:wikitext(competence .. ' : ' .. niveau)
Ligne 91 : Ligne 93 :
for i = 1, n_liste do
for i = 1, n_liste do
local aptitude = args['aptitude' .. i] or args['perk' .. i] or ''
local aptitude = args['aptitude' .. i]
if aptitude == '' then break end
if not aptitude then
break
end
local item = mw.html.create('li')
local item = mw.html.create('li')
Ligne 101 : Ligne 105 :
end
end
local cout = args['coût'] or args['cost'] or ''
local cout = args['coût']
if cout ~= '' then
if cout then
local item = mw.html.create('li')
local item = mw.html.create('li')
:wikitext('Coût : ' .. cout)
:wikitext('Coût : ' .. cout)

Version du 7 février 2022 à 21:12

Documentation du module

Ce module génère le modèle {{Tableau d'artisanat}}.

Documentation transclues de Module:Tableau d'artisanat/doc.
local p = {}

local n_liste = 15 -- Nombre maximal d'éléments de chaque liste.

-- à supprimer lorsque le module Icone sera OK
local icone = {
	['portée'] = 'Icon range.png',
	['niveau'] = 'Icon level.png'
}

--[[
	Liste des paramètres acceptés pour les matériaux et les produits
	Compatible français-anglais
]]
local parametres = {
	materiau = {
		nom = 'matériau',
		qte = 'matériau#'
	},
	produit = {
		nom = 'produit',
		qte = 'produit#'
	}
}

local function creerListeSimple(args, param, titre)
	local items = ''
	
	for i = 1, n_liste do
		local materiau = args[param.nom .. i]
		if not materiau then
			break
		end
		
		local quantite = args[param.qte .. i] or '1'
		
		local item = mw.html.create('li')
			:wikitext(materiau .. ' × ' .. quantite)
			:done()
		items = items .. tostring(item)
	end
	
	local res = mw.html.create('div')
		:addClass('artisanat-colonne')
		:tag('div')
			:addClass('artisanat-colonne-titre')
			:wikitext(titre)
			:done()
		:tag('div')
			:addClass('artisanat-colonne-liste')
			:tag('ul')
			:node(items)
		:allDone()
	
	return tostring(res)
end

local function creerListePrerequis(args)
	local items = ''
	
	local atelier = args['poste de travail']
	if atelier then
		local item = mw.html.create('li')
			:wikitext(atelier)
			:done()
		items = items .. tostring(item)
	end
	
	local saison = args['saison']
	if saison then
		local item = mw.html.create('li')
			:wikitext(saison)
			:done()
		items = items .. tostring(item)
	end
	
	local recette = args['recette']
	if recette then
		local item = mw.html.create('li')
			:wikitext(recette)
			:done()
		items = items .. tostring(item)
	end
	
	local competence = args['compétence']
	if competence then
		local niveau = args['niveau'] or 'niveau ?'
		local item = mw.html.create('li')
			:wikitext(competence .. ' : ' .. niveau)
			:done()
		items = items .. tostring(item)
	end
	
	for i = 1, n_liste do
		local aptitude = args['aptitude' .. i]
		if not aptitude then
			break
		end
		
		local item = mw.html.create('li')
			:wikitext(aptitude)
			:done()
		
		items = items .. tostring(item)
	end
	
	local cout = args['coût']
	if cout then
		local item = mw.html.create('li')
			:wikitext('Coût : ' .. cout)
			:done()
		items = items .. tostring(item)
	end
	
	local res = mw.html.create('div')
		:addClass('artisanat-colonne')
		:tag('div')
			:addClass('artisanat-colonne-titre')
			:wikitext('Prérequis')
			:done()
		:tag('div')
			:addClass('artisanat-colonne-liste')
			:tag('ul')
			:node(items)
		:allDone()
	
	return tostring(res)
end

local function creerSeparateur(nomIcone, infobulle)
	local res = mw.html.create('span')
		:addClass('artisanat-separateur')
		:wikitext('[[Fichier:' .. icone[nomIcone] .. '|' .. infobulle .. '|15px|link=|alt=' .. infobulle .. ']]')
		:allDone()
		
	return tostring(res)
end

function p._artisanat(args)
	local res = mw.html.create('div')
		:addClass('artisanat')

	res
		:node(creerListePrerequis(args))
		:node(creerSeparateur('portée', 'nécessite'))
		:node(creerListeSimple(args, parametres.materiau, 'Matériaux'))
		:node(creerSeparateur('niveau', 'produit'))
		:node(creerListeSimple(args, parametres.produit, 'Produits'))

	return res
end

function p.artisanat(frame)
	local args = {}
	local argsParent = frame:getParent().args

	-- Paramètres vides interprétés par Lua.
	for cle, val in pairs(argsParent) do
		if val ~= '' then
			args[cle] = val
		end
	end

	return p._artisanat(args)
end

return p