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