Hopp til innhold
 







Hovedmeny
   


Navigasjon  



Forside
Tilfeldig side
Hjelp
Siste endringer
 




Prosjekt  



Prosjektportal
Hvordan bidra?
Tinget
Torget
Konkurranser
 




Wikipedia  



Kontakt Wikipedia
Doner
Wikimedia Norge
 








Søk  

































Opprett konto

Logg inn
 









Opprett konto
 Logg inn
 




Sider for utloggede bidragsytere lær mer  



Bidrag
Brukerdiskusjon
 

















Modul:Wayback






Svenska
فارسی
Português
 

Rediger lenker
 









Modul
Diskusjon
 

















Les
Rediger kilde
Vis historikk
 








Verktøy
   


Handlinger  



Les
Rediger kilde
Vis historikk
 




Generelt  



Lenker hit
Relaterte endringer
Spesialsider
Permanent lenke
Sideinformasjon
Hent forkortet URL
Last ned QR-kode
Wikidata-element
 




Skriv ut / eksporter  



Last ned som PDF
Utskriftsvennlig versjon
 
















Utseende
   

 






Fra Wikipedia, den frie encyklopedi
 


Imported from enwp via svwp.

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;">&#124;' .. 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 .. "&#32;(''arkivert " .. fulldate .. "'')."
  end

  error("Error in [[:Template:"..tname.."]]: Unknown problem. Please report on template talk page (code 7)")

end

return p

Hentet fra «https://no.wikipedia.org/w/index.php?title=Modul:Wayback&oldid=19376217»

Skjulte kategorier: 
Grunnmoduler
Grunnmoduler med dokumentasjon
 



Denne siden ble sist redigert 17. apr. 2019 kl. 13:53.

Innholdet er tilgjengelig under Creative Commons-lisensen Navngivelse-DelPåSammeVilkår, men ytterligere betingelser kan gjelde. Se bruksvilkårene for detaljer.



Personvern

Om Wikipedia

Forbehold

Atferdsnorm

Utviklere

Statistikk

Erklæring om informasjonskapsler

Mobilvisning



Wikimedia Foundation
Powered by MediaWiki