Jump to content

Module:Gutenberg

Permanently protected module
From Wikipedia, the free encyclopedia

local p = {}
 
function p.author(frame)
  
  local pframe = frame:getParent()
  local args = pframe.args
 
  local tname = "Gutenberg author"                                 -- name of calling template. Change if template is renamed.
 
  local id       = nil                                             -- author name, or number. Name goes to search page, number goes direct to author page 
  local name     = nil                                             -- display name on Wikipedia (default: article title)
  local url      = nil
  local tagline  = "at [[Project Gutenberg]]"
  local urlheadname  = "https://www.gutenberg.org/author/"          
  local urlheadnumb  = "https://www.gutenberg.org/ebooks/author/" 
  local urlhead  = nil

  -- Argument |id=
  id = trimArg(args[1]) or trimArg(args.id)
  if not id then
    local bestP1938 = mw.wikibase.getBestStatements(mw.wikibase.getEntityIdForCurrentPage(), 'P1938')[1]
    if bestP1938 and bestP1938.mainsnak.snaktype == 'value' then
      id = bestP1938.mainsnak.datavalue.value
      local entity = mw.wikibase.getEntityObject() or {}
      tagline = tagline .. " [[File:OOjs UI icon edit-ltr-progressive.svg |frameless |text-top |10px |alt=Edit this at Wikidata |link=https://www.wikidata.org/wiki/" .. entity.id .. "#P1938|Edit this at Wikidata]]" 
    else
      error("Parameter id is missing. See [[Template:" .. tname .. "]] documentation")
    end
  end 
  if tonumber(id) then -- it's a number
    urlhead = urlheadnumb
  else
    urlhead = urlheadname
    id = mw.ustring.gsub(id," ", "+")
  end

  -- Argument |name=
  name = trimArg(args[2]) or trimArg(args.name)
  if not name then
    name = mw.title.getCurrentTitle().text:gsub('%s+%([^%(]-%)$', '') -- Current page name without the final parentheses
  end

  -- Argument |coda=
  if trimArg(args.coda) then
    tagline = tagline .. " " .. trimArg(args.coda)
  end

  url = "[" .. urlhead .. id .. " Works by " .. name .. "] " .. tagline

  return url

end

function p.Australia(frame)
  
  local pframe = frame:getParent()
  local args = pframe.args

  local tname = "Gutenberg Australia"                              -- name of calling template. Change if template is renamed.
 
  local id       = nil                                             -- ID. eg. http://gutenberg.net.au/plusfifty-n-z.html#shanks .. the ID = plusfifty-n-z.html#shanks
                                                                   -- ID is the same for linking an individual book title, or all books by the author.
  local name     = nil                                             -- display name on Wikipedia (default: article title)
  local author   = nil                                             -- flag if an author (default: no)
  local url      = nil
  local urlhead  = "http://gutenberg.net.au/"
  local prefix   = ""
  local tagline  = "at [[Project Gutenberg Australia]]"
  local italic   = "''"

  -- Argument |id=
  id = trimArg(args[1]) or trimArg(args.id)
  if not id then
    error("Parameter id is missing. See [[Template:" .. tname .. "]] documentation")
  end 

  -- Argument |name=
  name = trimArg(args[2]) or trimArg(args.name)
  if not name then
    name = mw.title.getCurrentTitle().text:gsub('%s+%([^%(]-%)$', '') -- Current page name without the final parentheses
  end

  -- Argument |author=
  author = trimArg(args.author)
  if author then
    if mw.ustring.lower(author) == "yes" then
      prefix = "Works by "
      italic = ""
    end
  end

  -- Argument |coda=
  if trimArg(args.coda) then
    tagline = tagline .. " " .. trimArg(args.coda)
  end

  url = "[" .. urlhead .. id .. " " .. prefix .. italic .. name .. italic .. "] " .. tagline

  return url

end

function p.Canada(frame)
  
  local pframe = frame:getParent()
  local args = pframe.args

  local tname = "FadedPage"                                        -- name of calling template. Change if template is renamed.
 
  local id       = nil                                             -- ID for author, eg. http://fadedpage.com/csearch.php?author=Shortt%2C%20Adam .. the id = Shortt, Adam
                                                                   -- ID for book titles, eg. http://fadedpage.com/showbook.php?pid=20160704 .. the id = 20160704
  local name     = nil                                             -- display name on Wikipedia (default: article title)
  local author   = nil                                             -- flag if an author (default: no)
  local url      = nil
  local urlhead  = "https://fadedpage.com/"
  local urlbook  = "showbook.php?pid="
  local urlauth  = "csearch.php?author="
  local prefix   = ""
  local tagline  = "at [[Distributed Proofreaders Canada|Faded Page]] (Canada)"
  local italic   = "''"

  -- Argument |id=
  id = trimArg(args[1]) or trimArg(args.id)
  if not id then
    error("Parameter id is missing. See [[Template:" .. tname .. "]] documentation")
  end 

  -- Argument |name=
  name = trimArg(args[2]) or trimArg(args.name)
  if not name then
    name = mw.title.getCurrentTitle().text:gsub('%s+%([^%(]-%)$', '') -- Current page name without the final parentheses
  end

  -- Argument |author=
  author = trimArg(args.author)
  if author then
    if mw.ustring.lower(author) == "yes" then
      id = mw.uri.encode( id, "PATH" )                                -- handle spaces within id argument string
      prefix = "Works by "
      italic = ""
      url = "[" .. urlhead .. urlauth .. id .. " " .. prefix .. italic .. name .. italic .. "] " .. tagline
      return url
    end
  end

  url = "[" .. urlhead .. urlbook .. id .. " " .. prefix .. italic .. name .. italic .. "] " .. tagline

  return url

end

function trimArg(arg)

  if arg == "" or arg == nil then
    return nil
  else
    return mw.text.trim(arg)
  end

end

return p
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy