« Module:Rotation de contenu » : différence entre les versions

De Les Archives de Vault-Tec
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... »
 
Kharmitch (discussion | contributions)
Aucun résumé des modifications
 
(13 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
local p = {}
local p = {}


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


function p.build(frame)  
function p.build(frame)  
content = frame:getParent().args
local fragment_size = frame.args['nombre']
fragment_size = frame.args[1]
local content = {}
for i, v in ipairs(frame.args) do
table.insert(content, v)
end
local list = '<ul>'
local list = '<ul class="avt-anecdotes">'
for i, k in ipairs(p.choose(content, fragment_size)) do
for i, k in ipairs(p.choose(content, fragment_size)) do
list = list .. '<li>' .. k .. '</li>'
list = list .. '<li>' .. k .. '</li>'

Dernière version du 25 juin 2022 à 13:58

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, fragment_size)
	local size = tonumber(fragment_size)
	
	if not size or size >= #content then
		return content
	end
	
	local day_number = os.date("*t").yday
	local n = day_number % #content
	
	if n == 0 then
		n = 1
	end
	
	local gap = #content - n + 1
	
	local m
	if gap < size then
		m = size - gap
	else
		m = n + size - 1
	end
	
	local fragment = {}
	if n > m then
		fragment = { unpack(content, n) }
		for i = 1, m do
			table.insert(fragment, content[i])
		end
	else
		fragment = { unpack(content, n, m) }
	end
	
	return fragment
end

function p.build(frame) 
	local fragment_size = frame.args['nombre']
	local content = {}
	
	for i, v in ipairs(frame.args) do
		table.insert(content, v)
	end
	
	local list = '<ul class="avt-anecdotes">'
	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