Redigerer
Modul:Wayback
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
local p = {} --[[--------------------------< inline_error >----------------------- Render red error message inline (as opposed to the system error() in large font) Add article to tracking category. ]] function p.inline_error(arg, msg) return '<span style="font-size:100%" class="error citation-comment">Error in wayback template: Check <code style="color:inherit; border:inherit; padding:inherit;">|' .. arg .. '=</code> value. ' .. msg .. '</span>' 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= ]] function p.trimArg(arg) if arg == "" or arg == nil then return nil else return mw.text.trim(arg) end end function p.trimArg2(arg) if arg == nil then return nil else return mw.text.trim(arg) end end --[[--------------------------< isdf >----------------------- Given df argument, return "yes" or "no" confirming what it is Default is "yes". If df is nil or "", return "yes". ]] function isdf(df) if df == "ja" or df == "j" or df == "JA" or df == "yes" or df == "Yes" or df == "YES" or df == "y" or df == "Y" or df == "dmy" or df == "DMY" then return "yes" elseif df == "iso" or df == "ISO" then return "iso" end return "yes" end --[[--------------------------< monthen2no >----------------------- Convert English month to Norwegian ]] function p.monthen2no(month) local nmonth month = mw.ustring.lower( month ) if month == "january" then nmonth = "januar" elseif month == "february" then nmonth = "februar" elseif month == "march" then nmonth = "mars" elseif month == "april" then nmonth = "april" elseif month == "may" then nmonth = "mai" elseif month == "june" then nmonth = "juni" elseif month == "july" then nmonth = "juli" elseif month == "august" then nmonth = "august" elseif month == "september" then nmonth = "september" elseif month == "october" then nmonth = "oktober" elseif month == "november" then nmonth = "november" elseif month == "december" then nmonth = "desember" else nmonth = month end return nmonth end --[[--------------------------< makedate >----------------------- Given a year, month and day, convert into a full date while respecting df (dmy or mdy) ]] function p.makedate(year, month, day, df) local nmonth, zmonth, zday if not year or year == "" or not month or month == "" or not day or day == "" then return nil end zmonth = month month = month:match("0*(%d+)") -- strip leading 0 if tonumber(month) < 1 or tonumber(month) > 12 then return year end nmonth = os.date("%B", os.time{year=2000, month=month, day=1} ) -- Month in name form if not nmonth then return year end nmonth = p.monthen2no(nmonth) zday = day day = day:match("0*(%d+)") if tonumber(day) < 1 or tonumber(day) > 31 then return nmonth .. " " .. year end if df == "yes" then return day .. ". " .. nmonth .. " " .. year elseif df == "iso" then return year .. "-" .. zmonth .. "-" .. zday else return nmonth .. " " .. day .. ", " .. year end end --[[--------------------------< wayback >----------------------- Main function for Template:wayback ]] function p.wayback(frame) local pframe = frame:getParent() local args = pframe.args local tname = "Wayback" -- name of calling template. Change if template rename. local url = nil -- source url (not archive.org url) local title = nil -- title argument local df = nil -- df argument local comma = nil -- "," for mdy or "" for dmy local snapdate = nil -- eg. "20160520000000" local snapdatelong = nil -- 14-digit 0-padded version of snapdate if it is truncated local fulldate = nil -- eg. "May 20, 2016" local currdate = nil -- today's date local urlhead = "https://web.archive.org/web/" local tail = nil local nolink = nil -- URL argument (positional #1) url = p.trimArg(args[1]) or p.trimArg(args.url) or p.trimArg(args.site) -- "site" for {{waybackdate}} if not url then return p.inline_error("url", "Empty.") end local safe = url local l, count = string.gsub(safe, "archive.org/?w?e?b?/[0-9]+/http", "") -- Count number of "archive.org" if count > 0 then return p.inline_error("url", "Should be the original URL not an archive.org URL.") end local l, count = string.gsub(safe, "archive.org/?w?e?b?/http", "") -- Count number of "archive.org" if count > 0 then return p.inline_error("url", "Should be the original URL not an archive.org URL.") end -- Title argument (positional #2) title = p.trimArg(args[2]) or p.trimArg(args.title) -- Date argument (positional #3) snapdate = p.trimArg(args[3]) or p.trimArg(args.date) if not snapdate or snapdate == "*" then snapdate = "*" else local safe = snapdate local starcount = 0 snapdate = string.gsub(safe, "[a-z][a-z]_[0-9]?$", "") -- Remove any trailing "re_" from date safe = snapdate snapdate = string.gsub(safe, "[-]", "") -- Remove dashes from date eg. 2015-01-01 safe = snapdate snapdate, starcount = string.gsub(safe, "[*]$", "") -- Remove trailing "*" and re-add below after processing if not tonumber(snapdate) then return p.inline_error("date", "Should be 14-digit snapshot ID in form YYYYMMDDhhmmss (error code 1)") end local dlen = string.len(snapdate) if dlen < 4 then return p.inline_error("date", "Should be 14-digit snapshot ID in form YYYYMMDDhhmmss (error code 2)") end if dlen < 14 then snapdatelong = snapdate .. string.rep("0", 14 - dlen) else snapdatelong = snapdate end local year = string.sub(snapdatelong, 1, 4) local month = string.sub(snapdatelong, 5, 6) local day = string.sub(snapdatelong, 7, 8) if not tonumber(year) or not tonumber(month) or not tonumber(day) then return p.inline_error("date", "Should be 14-digit snapshot ID in form YYYYMMDDhhmmss (error code 3)") end if tonumber(month) > 12 or tonumber(day) > 31 or tonumber(month) < 1 then return p.inline_error("date", "Date has invalid day or month. (error code 4)") end currdate = os.date("%Y") if tonumber(year) > tonumber(currdate) or tonumber(year) < 1900 then return p.inline_error("date", "Date has invalid year. (error code 5)") end if starcount == 1 then snapdate = snapdate .. "*" end df = isdf( p.trimArg(args.df) ) if df == "yes" then comma = "" else comma = "," end fulldate = p.makedate(year, month, day, df) if not fulldate then return p.inline_error("date", "(error code 6)") end end -- Nolink argument nolink = p.trimArg2(args.nolink) if not nolink then tail = " hos [[Wayback Machine]]" else tail = " hos Wayback Machine" end -- Render if not title and not fulldate then -- No title. No date return "[" .. urlhead .. snapdate .. "/" .. url .. " Arkivkopi]" .. tail .. "." elseif not title and fulldate then -- No title. Date. return "[" .. urlhead .. snapdate .. "/" .. url .. " Arkivert] " .. fulldate .. comma .. tail .. "." elseif title and not fulldate then -- Title. No date. return "[" .. urlhead .. snapdate .. "/" .. url .. " " .. title .. "]" .. tail .. "." elseif title and fulldate then -- Title. Date. return "[" .. urlhead .. snapdate .. "/" .. url .. " " .. title .. "]" .. tail .. " (''arkivert " .. fulldate .. "'')." end error("Error in [[:Template:"..tname.."]]: Unknown problem. Please report on template talk page (code 7)") end return p
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Forhåndsvis en side som bruker denne malen
Feilsøkingskonsoll
* Moduleksporteringer er tilgjengelig som variabelen «p», inkludert ulagrede endringer. * Start en linje med «=» for å evaluere den som et uttrykk, eller bruk print(). Bruk mw.logObject() for tabeller. * Bruk mw.log() og mw.logObject() i modulkode for å sende meldinger til denne konsollen.
Mal som brukes på denne siden:
Modul:Wayback/dok
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Modul
Diskusjon
English
Visninger
Les
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon