Módulo:Diario de viaje
La documentación para este módulo puede ser creada en Módulo:Diario de viaje/doc
local p = {}
local lang = mw.language.getContentLanguage()
local listPage = mw.title.new('Diario de viaje/Lista',4)
function list()
local t = {}
local pattern = '%-%-%-%-.-%-%-%-%-'
for item in string.gmatch('----\n'..string.gsub(listPage:getContent(),'(\n%-%-%-%-)\n','%1%1\n')..'\n----',pattern) do
local m1,m2,m3 = string.match(item,'^%-%-%-%-\n(.-)\n(.-)\n(.+)%-%-%-%-$')
if m1~=nil and m2~=nil and m3~=nil then
table.insert(t,{m1,m2,m3})
else
local n1,n2 = string.match(item,'^%-%-%-%-\n(.-)\n(.-)\n%-%-%-%-$')
if n1~=nil and n2~=nil then
table.insert(t,{n1,'',n2})
end
end
end
return t
end
function p.diario(frame)
local args = frame:getParent().args
local iconsize = (args.iconsize or '30px')
local showIcons = true
local useGroups = false
for _,val in pairs(args) do
if val=='noicons' then
showIcons = false
elseif val=='grouped' then
useGroups = true
end
end
local sectionTitles = {
misc= 'Generiche',
stats='Statistiche',
talk= 'Discussioni',
tech= 'Notizie tecniche'
}
local defaultIcons = {
stats='QtiPlot logo.png',
talk= 'Speech balloon.svg',
tech= 'Crystal Clear action run.svg'
}
local l = list()
local o = {}
local latest = nil
for i,x in pairs(l) do
local icon = mw.text.trim(x[2])
local sect = nil
if icon~='' then
local par1,par2 = string.match(icon,'^(.-)%|((.-)%.(.+))$')
if par1~=nil and par1~='' and par2~=nil and par2~='' then
sect = par1
icon = par2
end
if (par1==nil or par1=='' or par2==nil or par2=='') and string.find(icon,'%.')==nil then
sect = icon
icon = ''
end
end
if sect==nil then
sect = 'misc'
end
if showIcons==true then
if icon=='' and defaultIcons[sect]~=nil then
icon = defaultIcons[sect]
end
if icon=='' then
icon = '<span style="display:inline-block;height:'..iconsize..';width:'..iconsize..'"> </span> '
else
icon = '[[File:'..icon..'|'..iconsize..']] '
end
else
icon = ''
end
local dt = tonumber(lang:formatDate('U',mw.text.trim(x[1])))
if latest==nil or dt>latest then
latest = dt
end
local txt = icon..'\'\'\''..lang:formatDate('d xg Y',mw.text.trim(x[1]))..'\'\'\': '..frame:preprocess(mw.text.trim(x[3]))
if sectionTitles[sect]~=nil then
sect = sectionTitles[sect]
end
if o[sect]~=nil then
table.insert(o[sect],txt)
else
o[sect] = {txt}
end
end
local res = {}
for k,x in pairs(o) do
table.insert(res,'==='..k..'===\n'..table.concat(x,'\n\n'))
end
return #l..' notizie (la più recente risale a '..lang:formatDuration(os.difftime(os.time(),latest),{'years','months','weeks','days'})..' fa)\n\n['..listPage:fullUrl{action = 'edit'}..' aggiungine una]\n\n'..table.concat(res,'\n\n')
end
return p