« Module:Fermentation » : différence entre les versions

De Les Archives de Vault-Tec
Kims (discussion | contributions)
Aucun résumé des modifications
Kims (discussion | contributions)
Aucun résumé des modifications
 
(26 versions intermédiaires par le même utilisateur non affichées)
Ligne 9 : Ligne 9 :


local data = {
local data = {
    -- Interaction spéciale si aucune autre, ne pas toucher --------
["aucune"] = {
image        = "Neutral test color.png",
description  = "Ce personnage ne possède pas d'interaction particulière."
},
    ----------------------------------------------------------------
["fermentable"] = {
["fermentable"] = {
checkIfYes  = false,
description  = function(args)
return "Version fermentable :  "
.. args["fermentable"]
.. "."
end
},
},
["fermenté"] = {
["fermenté"] = {
checkIfYes  = false,
description  = function(args)
return "Version fermenté :  "
.. args["fermenté"]
.. "."
end
},   
},   
["mature"] = {
["mature"] = {
checkIfYes  = false,
description  = function(args)
return "Version mature :  "
.. args["mature"]
.. "."
end
}
}
}
}


------------------------------------------------
------------------------------------------------
 
function buildRow(args, def)
function buildRow(args, def)
local description = def.description
if type(def.description) == 'function' then
description = description(args)
end
description = mw.html.create( 'p' )
:wikitext( description )
:done()
local note = def.note
local note = def.note
if note then
if note then
Ligne 38 : Ligne 51 :
return mw.html.create( 'li' )
return mw.html.create( 'li' )
:addClass( 'avt-interactions-row' )
:addClass( 'avt-interactions-row' )
:node(image)
:tag( 'div' )
:addClass( 'avt-interactions-text' )
:node(description)
:node(description)
:node(note)
:node(note)
Ligne 66 : Ligne 76 :
res:node(buildRow(args, def))
res:node(buildRow(args, def))
end
end
end
-- cas particulier le pnj n'a aucune interaction
if isEmpty then
res:node(buildRow(args, data.aucune))
end
end

Dernière version du 19 juillet 2021 à 18:06

La documentation pour ce module peut être créée à Module:Fermentation/doc

local p = {}

local OUI = 'oui'
local LF = '\n'

------------------------------------------------
-----     Référentiel des interactions     ----- 
------------------------------------------------

local data = {
	["fermentable"] = {
			description  = function(args)
			return "Version fermentable :  "
				.. args["fermentable"]
				.. "."
		end	
	},
	["fermenté"] = {			
			description  = function(args)
			return "Version fermenté :  "
				.. args["fermenté"]
				.. "."
		end	
	},   
	["mature"] = {
					description  = function(args)
			return "Version mature :  "
				.. args["mature"]
				.. "."
		end	
	}
}

------------------------------------------------
function buildRow(args, def)
		local description = def.description
	if type(def.description) == 'function' then
		description = description(args)
	end
	description = mw.html.create( 'p' )
		:wikitext( description )
		:done()
	
	local note = def.note
	if note then
		if type(note) == 'function' then
			note = note(args)
		end
	end
	
	return mw.html.create( 'li' )
		:addClass( 'avt-interactions-row' )
			:node(description)
			:node(note)
		:done()
end

function p._build(args)
	local res = mw.html.create( 'ul' )
		:addClass( 'avt-interactions' )
	
	-- on trie les arguments par ordre alphabétique
	local keys = {}
	for k, v in pairs(args) do
		table.insert(keys, k)
	end
	table.sort(keys)
	
	local isEmpty = true
	
	for i, key in ipairs(keys) do
		argValue = args[key]
		local def = data[key:lower()]
		if def and (not def.checkIfYes or argValue:lower() == OUI) and argValue ~= '-' then
			isEmpty = false
			res:node(buildRow(args, def))
		end
	end
	
	res:allDone()
	
	return res
end

function p.build(frame)
	local args = {}
	
	local argsParent = frame:getParent().args
	for cle, val in pairs(argsParent) do
		if val then
			val = mw.text.trim(val)
			if val ~= '' then
				args[cle] = mw.text.trim(val)
			end
		end
	end
	
	return p._build(args)
end

return p