Module:Gutenberg
Appearance
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 author number. The later will go direct to the author page, the former to a search results page.
local name = nil -- display name on Wikipedia (default: article title)
local url = nil
local tagline = "at [[Project Gutenberg]]"
local urlheadname = "//www.gutenberg.org/author/"
local urlheadnumb = "//www.gutenberg.org/ebooks/author/"
local urlhead = nil
if args.id == "" or args.id == nil then
-- return "Error in {{" .. tname .. "}}, id missing. Please see documentation."
return error("Parameter id is missing")
else
id = mw.text.trim(args.id)
if tonumber(id) ~= nil then -- it's a number
urlhead = urlheadnumb
else
urlhead = urlheadname
end
end
if args.name == "" or args.name == nil then
name = mw.title.getCurrentTitle().basePageTitle
else
name = mw.text.trim(args.name)
end
url = "[" .. urlhead .. id .. " Works by " .. name .. "] " .. tagline
return url
end
--[[
replace
Source: https://en.wikipedia.org/wiki/Module:String#replace
This function allows one to replace a target string or pattern within another string.
Usage:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
OR
{{#invoke:String|replace|source=source_string|pattern=pattern_string|replace=replace_string|
count=replacement_count|plain=plain_flag}}
Parameters
source: The string to search
pattern: The string or pattern to find within source
replace: The replacement text
count: The number of occurences to replace, defaults to all.
plain: Boolean flag indicating that pattern should be understood as plain
text and not as a Lua style regular expression, defaults to true
]]
function replace( frame )
local new_args = str._getParameters( frame.args, {'source', 'pattern', 'replace', 'count', 'plain' } );
local source_str = new_args['source'] or '';
local pattern = new_args['pattern'] or '';
local replace = new_args['replace'] or '';
local count = tonumber( new_args['count'] );
local plain = new_args['plain'] or true;
if source_str == '' or pattern == '' then
return source_str;
end
plain = str._getBoolean( plain );
if plain then
pattern = str._escapePattern( pattern );
replace = mw.ustring.gsub( replace, "%%", "%%%%" ); --Only need to escape replacement sequences.
end
local result;
if count ~= nil then
result = mw.ustring.gsub( source_str, pattern, replace, count );
else
result = mw.ustring.gsub( source_str, pattern, replace );
end
return result;
end
return p