Modulo:Sandbox/M.casanova/SecondoLivelloItaliano: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Omega Bot (discussione | contributi)
m Bot: rimuovo no globals obsoleto
 
(27 versioni intermedie di un altro utente non mostrate)
Riga 1:
require('Module:No globalsstrict')
local getArgs = require('Module:Arguments').getArgs
local mWikidata = require('Modulo:Wikidata')
local p = {}
 
local function p.mainagg(framet, ...)
local targs = getArgs(frame){...}
for _, s in ipairs(args) do
local dato = t[1]
table.insert(t, s)
local tracce1 = {}
end
local tracce2 = {}
end
local i
local ss
local wdTracce, wdAutori, wdParole, wdBasatoSu
local ordine, ddato, titolo, durata
local ret
wdTracce = mWikidata._getClaims('P658', { from = dato })
 
local function separa(ss)
if wdTracce then
local t = false
if (ss:find("*") and (ss:find("*") == 1)) then
ss = ss:sub(2)
t = true
end
local dd = { }
string.gsub(ss,"([^\/]+)", function(c) dd[#dd+1] = mw.text.trim(c) end)
for i=1,3 do
if (dd[i]) then
if (dd[i] == '-') then dd[i] = '' end
else
dd[i]= (i==1) and '' or false
end
end
 
return { t, dd[1], dd[2], dd[3] }
local num = 0
end
for _, traccia in ipairs(wdTracce) do
ss = ''
num = num + 1
titolo = mWikidata._formatStatement(traccia)
 
function p.main(frame)
ordine = mWikidata._formatQualifiers(traccia, 'P1545')
local args = getArgs(frame, {
 
valueFunc = function (key, value)
if (ordine and tonumber(ordine)) then
if type(key) == "number" then
ordine = tonumber(ordine)
ssif value == nil ordinethen
return nil
else
value = mw.text.trim(value)
end
else
if value == '' then return nil end
ordine = -1
end
ss = '-'
return value
end
end
})
local titolo = args['titolo']
local colore = args['colore'] or 'ccc'
local numera = args['numera'] and tonumber(args['numera']) or 5
local inizio = args['inizio'] and tonumber(args['inizio']) or 1
inizio = inizio-1
local ret = {}
local n = 1
local vv
 
if (args[1]) then
 
agg(ret,'<div style="font-size:95%;margin:10px 0;padding:0 5px;border:0;border-left:4px solid #',colore,'"><table cellpadding=0 cellspacing=0 style="padding:0">')
 
if (titolo) then
durata = mWikidata._formatQualifiers(traccia, 'P2047')
vv = separa(titolo)
if durata == nil then
agg(ret,'<tr><td></td><td><i>',vv[2],'</i></td>')
durata = 'n.d.'
if (vv[3]) then
else
agg(ret,'<td>&emsp;</td><td><i>',vv[3],'</i></td>')
durata = tonumber(durata) or 0
if (durata > 59vv[4]) then
agg(ret,'<td>&emsp;</td><td><i>',vv[4],'</i></td>')
durata = math.floor(durata/60) .. '\' ' .. (durata - 60*math.floor(durata/60)) .. '"'
else
durata = durata .. '"'
end
end
agg(ret,'</tr><tr><td style="line-height:8px">&nbsp;</td></tr>')
end
 
while (args[n]) do
ss = ss .. '. \'\'' .. titolo .. '\'\' (' .. durata .. ')'
vv = separa(args[n])
 
if (vv[1]) then -- nuova strofa
if traccia.mainsnak.datavalue.value.id then
agg(ret,'<tr><td colspan=2 style="line-height:8px">&nbsp;</td></tr>')
ddato = traccia.mainsnak.datavalue.value.id
wdAutori = mWikidata._getClaims('P86', { from = ddato })
if wdAutori then
ss = ss .. ' <small>Comp.: '
i = 1
for _, autore in ipairs(wdAutori) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(autore)
end
ss = ss .. '</small>'
end
wdParole = mWikidata._getClaims('P676', { from = ddato })
if wdParole then
ss = ss .. ' <small>Parol.: '
i = 1
for _, parola in ipairs(wdParole) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(parola)
end
ss = ss .. '</small>'
end
wdBasatoSu = mWikidata._getClaims('P144', { from = ddato })
if wdBasatoSu then
ss = ss .. ' <small>Basato su: '
i = 1
for _, basato in ipairs(wdBasatoSu) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(basato)
end
ss = ss .. '</small>'
end
end
agg(ret,'<tr><td',(n == 1) and ' style="width:30px"' or '')
 
if (ordine(n+inizio) % numera == -10) then -- mostra numero
agg(ret,' align=right><span style="font-size:95%;color:#444">',(n+inizio),'</span>&ensp;')
table.insert(tracce2,ss)
else
agg(ret,'>')
tracce1[ordine] = ss
end
 
agg(ret,'</td><td>',vv[2],'</td>')
if (vv[3]) then
agg(ret,'<td>&emsp;</td><td>',vv[3],'</td>')
if (vv[4]) then
agg(ret,'<td>&emsp;</td><td>',vv[4],'</td>')
end
end
agg(ret,'</tr>')
n = n+1
end
agg(ret,'</table></div>')
 
return table.concat(ret)
else
return '<span style="color:#800">Errore nel template Poesia</span>'
end
 
ret = ''
for _,trac in ipairs(tracce1) do
ret = ret .. trac .. '<br/>'
end
for _,trac in ipairs(tracce2) do
ret = ret .. trac .. '<br/>'
end
 
return ret
 
end