Modul:Wayback
Dokumentation [visa] [redigera] [historik] [rensa sidcachen]
Lua Modul for Mall:Wayback
- Testcases: Mall:Wayback/sandboxLua/testcases
- Module Lua: Modul:Wayback
- Sandbox Lua: Modul:Wayback/sandbox
- Sandbox Template Lua: Mall:Wayback/sandboxLua
- Sandbox Template original: Mall:Wayback/sandbox
Imported from enwp please translate to Swedish as needed.
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 .. '[[Kategori:Sidor med mallen Wayback]]</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) endendfunction p.trimArg2(arg) if arg == nil then return nil else return mw.text.trim(arg) endend--[[--------------------------< isdf >-----------------------Given df argument, return "yes" or "no" confirming what it isDefault is "yes". If df is nil or "", return "yes". ]]function isdf(df) if 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--[[--------------------------< monthen2sw >-----------------------Convert English month to Swedish ]]function p.monthen2sw(month) local nmonth month = mw.ustring.lower( month ) if month == "january" then nmonth = "januari" elseif month == "february" then nmonth = "februari" elseif month == "march" then nmonth = "mars" elseif month == "april" then nmonth = "april" elseif month == "may" then nmonth = "maj" elseif month == "june" then nmonth = "juni" elseif month == "july" then nmonth = "juli" elseif month == "august" then nmonth = "augusti" elseif month == "september" then nmonth = "september" elseif month == "october" then nmonth = "oktober" elseif month == "november" then nmonth = "november" elseif month == "december" then nmonth = "december" 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.monthen2sw(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 = " hämtat från the [[Internet Archive#Wayback Machine|Wayback Machine]]" else tail = " hämtat från the Wayback Machine" end -- Render if not title and not fulldate then -- No title. No date return "[" .. urlhead .. snapdate .. "/" .. url .. " Arkivkopia]" .. tail .. "." elseif not title and fulldate then -- No title. Date. return "[" .. urlhead .. snapdate .. "/" .. url .. " Arkiverad] " .. 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 .. " (arkiverat " .. fulldate .. ")." end error("Error in [[:Template:"..tname.."]]: Unknown problem. Please report on template talk page (code 7)")endreturn p
🔥 Top keywords: Portal:HuvudsidaSpecial:SökHamid NouryKylian MbappéJohan Floderus (tjänsteman)Antoine GriezmannEuropamästerskapet i fotbollRomelu LukakuEuropamästerskapet i fotboll 2024Ahmadreza DjalaliLasse DidingJude BellinghamEuropamästerskapet i fotboll 2020Special:Senaste ändringarN'Golo KantéFrida NordstrandFrankrikes herrlandslag i fotbollMidsommarJens FjellströmVärldsmästerskapet i fotboll för herrarEwa RoosLilian ThuramSverigeCristiano RonaldoPeter MangsMarcus ThuramOlof MellbergSlovakienZlatan IbrahimovićElisabeth av Bayern (1837–1898)Amanda BergmanOlivier GiroudMarko ArnautovićDavid AlabaBelgiens herrlandslag i fotbollAnnie LeibovitzBelgienRumänienDag Hammarskjöld