Module:Gutenberg/sandbox
Appearance
| This is the module sandbox page for Module:Gutenberg (diff). |
| This module is rated as beta. It is considered ready for widespread use, but as it is still relatively new, it should be applied with some caution to ensure results are as expected. |
| This Lua module is used on approximately 12,000 pages and changes may be widely noticed. Test changes in the module's /sandbox or /testcases subpages, or in your own module sandbox. Consider discussing changes on the talk page before implementing them. |
This module uses the Wikidata property:
Usage
[edit]There are currently 3 templates that invoke this module, {{Gutenberg author}}, {{Gutenberg Australia}} and {{FadedPage}} (Canada)
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