Module:Gutenberg: Difference between revisions
From Zoophilia Wiki
Jump to navigationJump to search
meta>GreenC No edit summary |
meta>GreenC No edit summary |
||
Line 17: | Line 17: | ||
if args.id == "" or args.id == nil then | if args.id == "" or args.id == nil then | ||
return "Error in {{" .. tname .. "}}, id missing. Please see documentation." | -- return "Error in {{" .. tname .. "}}, id missing. Please see documentation." | ||
return error("Parameter id is missing") | |||
else | else | ||
id = mw.text.trim(args.id) | id = mw.text.trim(args.id) | ||
Line 28: | Line 29: | ||
if args.name == "" or args.name == nil then | if args.name == "" or args.name == nil then | ||
name = mw.title.getCurrentTitle(). | name = mw.title.getCurrentTitle().basePageTitle | ||
else | else | ||
name = mw.text.trim(args.name) | name = mw.text.trim(args.name) | ||
end | end | ||
url = "[" .. urlhead .. id .. " Works by " .. name .. "] " .. tagline | url = "[" .. urlhead .. id .. " Works by " .. name .. "] " .. tagline | ||
Line 39: | Line 39: | ||
end | 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 | return p |
Revision as of 13:41, 4 October 2015
Documentation for this module may be created at Module:Gutenberg/doc
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