Modulo:Webarchive/sandbox: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Prova per errore di lint
 
Moroboshi (discussione | contributi)
refactoring in corso d'opera
Riga 5:
 
]]
 
require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
 
local p = {}
local ulx = {} -- Associative array to hold template data
local track = {} -- Associative array to hold tracking categories
local maxurls = 10 -- Max number of URLs allowed.
 
local servizi = {
Line 72 ⟶ 78:
end
 
return '<divspan style="font-size:100%" class="error citation-comment">' .. msg .. '</divspan>'
 
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 139 ⟶ 124:
]]
 
local function tableLength(Tt)
local count = 0
for _ in pairs(Tt) do count = count + 1 end
return count
end
Line 243 ⟶ 228:
-- 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 267 ⟶ 252:
end
 
local fulldate = makeDate(dt.year, dt.month, dt.day, df)
if not fulldate then
return inlineRed("[Date error] (4)", "error")
Line 288 ⟶ 273:
local snapdate, snapdatelong, currdate, fulldate
 
 
local safe = path
local snapdate = string.gsub(safepath, "^/w?e?b?/?", "") -- Remove leading "/web/" or "/"
local safe = snapdate
local Npath_elements = mw.text.split(safe, "/")
snapdate = Npath_elements[1]
if snapdate == "*" then -- eg. /web/*/http..
return "index"
Line 329 ⟶ 314:
end
 
local fulldate = makeDate(year, month, day, df)
if not fulldate then
return inlineRed("[Date error] (7)", "error")
Line 344 ⟶ 329:
]]
 
local function serviceName(hosturl_main, nolink)
 
local tracking = "Categoria:Template Webarchive - altri archivi"
Line 354 ⟶ 339:
end
 
ulx.url1url_main.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
ulx.url1url_main.service = servizio['service'] or ulx.url1url_main.service
if servizio['tailbracket'] then
ulx.url1url_main.tail = mw.ustring.format(servizio.tailbracket, bracketopen, bracketclose)
else
ulx.url1url_main.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 385 ⟶ 372:
]]
 
local function parseExtraArgs(args, maxurls, ulx)
 
local i, jindx, argurl, argurl2, argdate, argtitle
 
jindx = 2
for i = 2, maxurls do
argurl = "url" .. i
if trimArg(args[argurl]) then
argurl2ulx[indx] = "url" .. j{}
ulx[argurl2indx]["url"] = {}args[argurl]
ulx[argurl2indx]["urldate"] = args[argurl"date" .. i] or args["data" .. i]
if not ulx[argurl2indx]["date"] = args["date" .. j] or args["data" .. j] then
if not ulx[argurl2indx]["date"] then= inlineRed("[Data mancante]", "warning")
ulx[argurl2]["date"] = inlineRed("[Data mancante]", "warning")
end
argtitleulx[indx]["title"] = args["title" .. ji] or args["titolo" .. i]
indx = indx + 1
if trimArg(args[argtitle]) then
ulx[argurl2]["title"] = args[argtitle]
else
ulx[argurl2]["title"] = nil
end
j = j + 1
end
end
end
 
if j == 2 then
return 0
else
return j - 2
end
 
end
 
--[[--------------------------< comma >-----------------------
Line 425 ⟶ 400:
 
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 470 ⟶ 445:
local period2 = "."
 
local url_main = ulx[1]
local indexstr = "archiviato"
if ulx.url1url_main.date == "index" then
indexstr = "archivio"
end
-- For {{wayback}}, {{webcite}}
 
if ulx.url1url_main.format == "none" then
if not ulx.url1url_main.title and not ulx.url1url_main.date then -- No title. No date
sand = "[" .. ulx.url1url_main.url .. " Archiviato]" .. ulx.url1url_main.tail
elseif not ulx.url1url_main.title and ulx.url1url_main.date then -- No title. Date.
if ulx.url1url_main.service == "wayback" then
period1 = "."
period2 = ""
end
sand = "[" .. ulx.url1url_main.url .. " Archiviato] il " .. ulx.url1url_main.date .. comma(ulx.url1url_main.date) .. ulx.url1url_main.tail .. period1
elseif ulx.url1url_main.title and not ulx.url1url_main.date then -- Title. No date.
sand = "[" .. ulx.url1url_main.url .. " " .. ulx.url1url_main.title .. "]" .. ulx.url1url_main.tail
elseif ulx.url1url_main.title and ulx.url1url_main.date then -- Title. Date.
sand = "[" .. ulx.url1url_main.url .. " " .. ulx.url1url_main.title .. "]" .. ulx.url1url_main.tail .. "&#32;(" .. indexstr .. " " .. ulx.url1url_main.date .. ")"
else
return nil
end
if #ulx.url1.extraurls > 01 then -- For multiple archive URLs
local tot = ulx.url1.extraurls + 1
sand = sand .. period2 .. " Archivi aggiuntivi: "
local archives_output = {}
for i=2,tot do
localfor indx = "url"2, ..#ulx ido
archives_output[#archives_output] = mw.ustring.format("[%s %s]", ulx[indx]["url"], ulx[indx]["title"] or ulx[indx]["date"] )
if ulx[indx]["title"] then
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
sand = sand .. mw.text.listToText(archives_output, ",", ".")
else
return sand
end
return sand
Line 516 ⟶ 480:
-- For {{cite archives}}
else
if ulx.url1url_main.format == "addlarchives" then -- Multiple archive services
displayheader = "Archivi aggiuntivi: "
else -- Multiple pages from the same archive
displayheader = "Pagine di archivio aggiuntivie&nbsp;aggiuntive su " .. ulx.url1url_main.date .. ": "
end
local tot = 1 + ulx.url1.extraurls
local sand = displayheader
local archives_output = {}
for i=1,tot do
localfor indx = "url" ..2,#ulx ido
displayfield = ulx[indx]["title"]
if ulx.url1url_main.format == "addlarchives" then
if not displayfield then displayfield = ulx[indx]["date"] end
displayfield = ulx[indx]["date"]
end
else
if not displayfield then displayfield = "Pagina " .. indx end
displayfield = "Pagina " .. i
end
end
sand = sand .. "[" .. ulx[indx]["url"] .. " " .. displayfield .. "]"
if i == tot then
sand = sand .. "."
else
sand = sand .. ", "
end
archive_ouptut[#archives_output] = mw.ustring.format("[%s %s]", ulx[indx]["url"], displayfield )
end
sand = sand .. mw.text.listToText(archive_otuput, ",", ".")
return sand
end
Line 547 ⟶ 502:
 
function p.webarchive(frame)
local args = getArgs(frame.args, {
valueFunc = function (key, value)
if (args[1]==nil) and (args["url"]==nil) then -- if no argument provided than check parent template/module args
if key == 'nolink' then
args = frame:getParent().args
return true
end
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 572 ⟶ 535:
end
 
ulx.url1local url_main = {}
ulx.url1url_main.url = url1
local uri1 = mw.uri.new(ulx.url1.url)
ulx.url1url_main.host = uri1.host
serviceName(url_main, args.nolink)
ulx.url1.extraurls = parseExtraArgs()
 
-- 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 ulx.url1url_main.service == "wayback" then
date = "index"
elseif date and ulx.url1url_main.service == "wayback" and verifydates == "yes" then
local ldf = dateFormat(date)
if ldf then
Line 595 ⟶ 553:
end
end
elseif date and ulx.url1url_main.service == "webcite" and verifydates == "yes" then
local ldf = dateFormat(date)
if ldf then
Line 604 ⟶ 562:
end
end
elseif not date and ulx.url1url_main.service == "wayback" then
date = decodeWaybackDate( uri1.path, "iso" )
if not date then
date = inlineRed("[Date error] (1)", "error")
end
elseif not date and ulx.url1url_main.service == "webcite" then
date = decodeWebciteDate( uri1.path, "iso" )
if date == "query" then
Line 619 ⟶ 577:
date = inlineRed("[Data mancante]", "warning")
end
ulx.url1url_main.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 ulx.url1url_main.date then
format = "none"
end
Line 636 ⟶ 594:
end
end
ulx.url1url_main.format = format
 
-- Title argument
local url_main.title = trimArg(args.title) or trimArg(args.title1) or trimArg(args.titolo) or trimArg(args.titolo1)
ulx.url1.title[1] = titleurl_main
parseExtraArgs(args, maxurls, ulx)
 
--if true then return mw.text.jsonEncode(ulx, mw.text.JSON_PRETTY) end
local rend = createRendering()
if not rend then