Module:Rotation de contenu

De Les Archives de Vault-Tec
Révision datée du 24 février 2022 à 10:29 par Kharmitch (discussion | contributions) (Page créée avec « local p = {} function p.choose(content, size) -- On retourne tout le contenu if not size then return content end day_number = os.date("*t").yday n = day_number % #content m = (day_number + size - 1) % #content if n == 0 then n = 1 m = m + 1 elseif m == 0 then m = 1 n = n - 1 end local fragment = {} if n < m then fragment = { unpack(content, n, m) } else fragment = { unpack(content, n) } for i = 1, m do table.insert(fragment... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Documentation du module

Module qui permet de faire tourner du contenu en fonction du numéro de jour dans l'année. Il est utilisé par le modèle {{Anecdotes}}.

Documentation transclues de Module:Rotation de contenu/doc.
local p = {}

function p.choose(content, size)
	-- On retourne tout le contenu
	if not size then
		return content
	end
	
	day_number = os.date("*t").yday
	
	n = day_number % #content
	m = (day_number + size - 1) % #content
	
	if n == 0 then
		n = 1
		m = m + 1
	elseif m == 0 then
		m = 1
		n = n - 1
	end
	
	local fragment = {}
	if n < m then
		fragment = { unpack(content, n, m) }
	else
		fragment = { unpack(content, n) }
		for i = 1, m do
			table.insert(fragment, content[i])
		end
	end
	
	return fragment
end

function p.build(frame) 
	content = frame:getParent().args
	fragment_size = frame.args[1]
	
	local list = '<ul>'
	for i, k in ipairs(p.choose(content, fragment_size)) do
		list = list .. '<li>' .. k .. '</li>'
	end
	list = list .. '</ul>'
	return list
end

return p