Module:Gutenberg

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 "

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 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