Modulo:Webarchive: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Moroboshi (discussione | contributi)
correzioni varie
Moroboshi (discussione | contributi)
Rollback (credevo che stavo lavorando in sandbox)
Riga 5:
 
]]
 
require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
 
local p = {}
local track = {} -- Associative array to hold tracking categories
local maxurls = 10 -- Max number of URLs allowed.
 
local servizi = {
Line 81 ⟶ 76:
end
 
--[[--------------------------< trimArg >-----------------------
 
trimArg returns nil if arg is "" while trimArg2 returns 'true' if arg is ""
trimArg2 is for args that might accept an empty value, as an on/off switch like nolink=
 
]]
 
local function trimArg(arg)
if arg == "" or arg == nil then
return nil
else
return mw.text.trim(arg)
end
end
local function trimArg2(arg)
if arg == nil then
return nil
else
return mw.text.trim(arg)
end
end
 
--[[--------------------------< base62 >-----------------------
Line 123 ⟶ 139:
]]
 
local function tableLength(tT)
local count = 0
for _ in pairs(tT) do count = count + 1 end
return count
end
Line 227 ⟶ 243:
-- http://www.webcitation.org/getfile.php?fileid=1c46e791d68e89e12d0c2532cc3cf629b8bc8c8e
 
if mw.ustring.find( dt.split[2], "query", 1, plain) or
mw.ustring.find( dt.split[2], "cache", 1, plain) or
mw.ustring.find( dt.split[2], "getfile", 1, plain) or
tonumber(dt.split[2]) then
return "query"
Line 251 ⟶ 267:
end
 
local fulldate = makeDate(dt.year, dt.month, dt.day, df)
if not fulldate then
return inlineRed("[Date error] (4)", "error")
Line 272 ⟶ 288:
local snapdate, snapdatelong, currdate, fulldate
 
local safe = path
 
local snapdate = string.gsub(pathsafe, "^/w?e?b?/?", "") -- Remove leading "/web/" or "/"
local safe = snapdate
local path_elementsN = mw.text.split(safe, "/")
snapdate = path_elementsN[1]
if snapdate == "*" then -- eg. /web/*/http..
return "index"
Line 313 ⟶ 329:
end
 
local fulldate = makeDate(year, month, day, df)
if not fulldate then
return inlineRed("[Date error] (7)", "error")
Line 328 ⟶ 344:
]]
 
local function serviceName(url_mainhost, nolink)
 
local tracking = "Categoria:Template Webarchive - altri archivi"
Line 338 ⟶ 354:
end
 
url_mainulx.url1.service = "altri"
ulx.url1.tail = " a " .. ulx.url1.host .. " " .. inlineRed("Errore: URL di servizio di archiviazione sconosciuto")
 
for _,servizio in ipairs(servizi) do
if mw.ustring.find(url_main.host, servizio.signature, 1, plain) then
url_mainulx.url1.service = servizio['service'] or url_mainulx.url1.service
if servizio['tailbracket'] then
url_mainulx.url1.tail = mw.ustring.format(servizio.tailbracket, bracketopen, bracketclose)
else
url_mainulx.url1.tail = servizio['tail'] or ulx.url1.tail
end
tracking = servizio['tracking'] or tracking
break
end
end
if url_main.tail == nil then
url_main.tail = " a " .. url_main.host .. " " .. inlineRed("Errore: URL di servizio di archiviazione sconosciuto")
end
track[tracking] = 1
Line 371 ⟶ 385:
]]
 
local function parseExtraArgs(args, maxurls)
 
local i, indxj, argurl, argurl2, argdate, argtitle
 
local ulx = {}
indxj = 12
for i = 2, maxurls do
argurl = "url" .. i
if trimArg(args[argurl]) then
ulx[indx]argurl2 = {}"url" .. j
ulx[indx]["url"argurl2] = args[argurl]{}
ulx[indxargurl2]["dateurl"] = args["date" .. iargurl] or args["data" .. i]
if not ulx[indxargurl2]["date"] then= args["date" .. j] or args["data" .. j]
if not ulx[indxargurl2]["date"] = inlineRed("[Data mancante]", "warning")then
ulx[argurl2]["date"] = inlineRed("[Data mancante]", "warning")
end
ulx[indx]["title"]argtitle = args["title" .. i] or args["titolo" .. i]j
if trimArg(args[argtitle]) then
indx = indx + 1
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
return ulx
end
 
if j == 2 then
return 0
else
return j - 2
end
 
end
 
--[[--------------------------< comma >-----------------------
Line 400 ⟶ 425:
 
local function comma(date)
local nN = mw.text.split(date, " ")
local oO = mw.text.split(nN[1], "-") -- for ISO
if oO[1] == "index" then return "" end
if not tonumber(oO[1]) then
return ","
else
Line 438 ⟶ 463:
]]
 
local function createRendering(url_main, ulx)
 
local sand, displayheader, displayfield
Line 445 ⟶ 470:
local period2 = "."
 
--local url_main = ulx[1]
local indexstr = "archiviato"
if url_mainulx.url1.date == "index" then
indexstr = "archivio"
end
-- For {{wayback}}, {{webcite}}
 
if url_mainulx.url1.format == "none" then
if not url_mainulx.url1.title and not url_mainulx.url1.date then -- No title. No date
sand = "[" .. url_mainulx.url1.url .. " Archiviato]" .. url_mainulx.url1.tail
elseif not url_mainulx.url1.title and url_mainulx.url1.date then -- No title. Date.
if url_mainulx.url1.service == "wayback" then
period1 = "."
period2 = ""
end
sand = "[" .. url_mainulx.url1.url .. " Archiviato] il " .. url_mainulx.url1.date .. comma(url_mainulx.url1.date) .. url_mainulx.url1.tail .. period1
elseif url_mainulx.url1.title and not url_mainulx.url1.date then -- Title. No date.
sand = "[" .. url_mainulx.url1.url .. " " .. url_mainulx.url1.title .. "]" .. url_mainulx.url1.tail
elseif url_mainulx.url1.title and url_mainulx.url1.date then -- Title. Date.
sand = "[" .. url_mainulx.url1.url .. " " .. url_mainulx.url1.title .. "]" .. url_mainulx.url1.tail .. "&#32;(" .. indexstr .. " " .. url_mainulx.url1.date .. ")"
else
return nil
end
if #ulx.url1.extraurls > 0 then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
sand = sand .. period2 .. " Archivi aggiuntivi: "
for i=2,tot do
local archives_output = {}
for local indx,urlx in= ipairs(ulx)"url" do.. i
if ulx[indx]["title"] then
archives_output[#archives_output+1] = mw.ustring.format("[%s %s]", urlx["url"], urlx["title"] or urlx["date"] )
displayfield = "title"
else
displayfield = "date"
end
sand = sand .. "[" .. ulx[indx]["url"] .. " " .. ulx[indx][displayfield] .. "]"
if i == tot then
sand = sand .. "."
else
sand = sand .. ", "
end
end
else
sand = sand .. table.concat(archives_output, ", ") .. "."
return sand
end
return sand
Line 480 ⟶ 516:
-- For {{cite archives}}
else
if url_mainulx.url1.format == "addlarchives" then -- Multiple archive services
displayheader = "Archivi aggiuntivi: "
else -- Multiple pages from the same archive
displayheader = "Pagine di archivio aggiuntive aggiuntivie&nbsp;su " .. url_mainulx.url1.date .. ": "
end
local tot = 1 + ulx.url1.extraurls
local sand = displayheader
for i=1,tot do
local archives_output = {}
for local indx, urlx= in"url" ipairs(ulx).. doi
displayfield = urlxulx[indx]["title"]
if url_mainulx.url1.format == "addlarchives" then
if not displayfield then
displayfield = urlxulx[indx]["date"] end
end
else
if not displayfield then
displayfield = "Pagina " .. indx+1 endi
end
end
sand = sand .. "[" .. ulx[indx]["url"] .. " " .. displayfield .. "]"
if i == tot then
sand = sand .. "."
else
sand = sand .. ", "
end
archive_ouptut[#archives_output+1] = mw.ustring.format("[%s %s]", urlx["url"], displayfield )
end
sand = sand .. table.concat(archive_output, ", ") .. "."
return sand
end
Line 502 ⟶ 547:
 
function p.webarchive(frame)
local args = getArgs(frame, {.args
if (args[1]==nil) and (args["url"]==nil) then -- if no argument provided than check parent template/module args
valueFunc = function (key, value)
args = frame:getParent().args
if key == 'nolink' then
end
return true
elseif value then
value = mw.text.trim(value)
if value ~= '' then return value end
end
return nil
end
})
 
-- if (args[1]==nil) and (args["url"]==nil) then -- if no argument provided than check parent template/module args
-- args = frame:getParent().args
-- end
 
local tname = "Webarchive" -- name of calling template. Change if template rename.
ulx = {} -- Associative array to hold template data
track = {} -- Associative array to hold tracking categories
maxurls = 10 -- Max number of URLs allowed.
local verifydates = "yes" -- See documentation. Set "no" to disable.
 
-- URL argument (first)
local url1 = trimArg(args.url) or trimArg(args.url1)
if not url1 then
return inlineError("url", "Empty.") .. createTracking()
end
if mw.ustring.find( url1, "https://web.http", 1, plain ) then -- track bug
track["Categoria:Errori di compilazione del template Webarchive"] = 1
return inlineError("url", "https://web.http") .. createTracking()
Line 535 ⟶ 572:
end
 
local url_mainulx.url1 = {}
url_mainulx.url1.url = url1
local uri1 = mw.uri.new(ulx.url1.url)
url_mainulx.url1.host = uri1.host
ulx.url1.extraurls = parseExtraArgs()
serviceName(url_main, args.nolink)
 
-- Nolink argument
local nolink = trimArg2(args.nolink)
 
serviceName(uri1.host, nolink)
 
-- Date argument
local date = trimArg(args.date) or trimArg(args.date1)
if date == "*" and url_mainulx.url1.service == "wayback" then
date = "index"
elseif date and url_mainulx.url1.service == "wayback" and verifydates == "yes" then
local ldf = dateFormat(date)
if ldf then
Line 553 ⟶ 595:
end
end
elseif date and url_mainulx.url1.service == "webcite" and verifydates == "yes" then
local ldf = dateFormat(date)
if ldf then
Line 562 ⟶ 604:
end
end
elseif not date and url_mainulx.url1.service == "wayback" then
date = decodeWaybackDate( uri1.path, "iso" )
if not date then
date = inlineRed("[Date error] (1)", "error")
end
elseif not date and url_mainulx.url1.service == "webcite" then
date = decodeWebciteDate( uri1.path, "iso" )
if date == "query" then
Line 577 ⟶ 619:
date = inlineRed("[Data mancante]", "warning")
end
url_mainulx.url1.date = date
 
-- Format argument
local format = trimArg(args.format) or trimArg(args.formato)
if not format then
format = "none"
else
if format == "addlpages" then
if not url_mainulx.url1.date then
format = "none"
end
Line 594 ⟶ 636:
end
end
url_mainulx.url1.format = format
 
-- Title argument
url_main.local title = trimArg(args.title) or trimArg(args.title1) or trimArg(args.titolo) or trimArg(args.titolo1)
ulx.url1.title = title
local ulx = parseExtraArgs(args, maxurls)
 
--if true then return mw.text.jsonEncode(ulx, mw.text.JSON_PRETTY) end
local rend = createRendering(url_main, ulx)
if not rend then
rend = '<span style="font-size:100%" class="error citation-comment">Errori in [[:Template:' .. tname .. ']]: Problema sconosciuto. Si prega di segnalarlo nella [[Discussioni_template:' .. tname .. '|pagina di discussione]] del template.</span>'