Difference between revisions of "Module:Librivox book/sandbox"
Jump to navigation
Jump to search
blackwiki>GreenC |
blackwiki>GreenC |
||
| Line 9: | Line 9: | ||
local tname = "Librivox book" -- name of calling template. Change if template rename. | local tname = "Librivox book" -- name of calling template. Change if template rename. | ||
| − | local dtitle = nil -- display title (default: title | + | local title = nil -- display and search title |
| − | local stitle = nil -- search title (default: title | + | local dtitle = nil -- display title (default: title) |
| + | local stitle = nil -- search title (default: title) | ||
| + | local lname = nil -- last name | ||
| + | local id = nil -- unsupported argument | ||
| + | local author = nil -- author | ||
local tagline = "public domain audiobook at [[LibriVox]]" | local tagline = "public domain audiobook at [[LibriVox]]" | ||
local urlhead = "https://librivox.org/search?" | local urlhead = "https://librivox.org/search?" | ||
local italic = "''" | local italic = "''" | ||
| − | + | id = trimArg(args.id) | |
| − | + | if id then | |
| + | error("Error in Template:" .. tname .. " - id argument not supported - please see documentation at [[Template:Librivox author]]") | ||
end | end | ||
| − | + | title = trimArg(args.title) | |
| − | title = mw.title.getCurrentTitle().text | + | if not title then |
| + | title = mw.title.getCurrentTitle().text:gsub('%s+%([^%(]-%)$', '') -- Current page name without the final parentheses | ||
dtitle = title | dtitle = title | ||
stitle = dtitle | stitle = dtitle | ||
else | else | ||
| − | |||
dtitle = title | dtitle = title | ||
stitle = dtitle | stitle = dtitle | ||
end | end | ||
| − | if args.stitle | + | if trimArg(args.stitle) then |
| − | + | stitle = trimArg(args.stitle) | |
| + | if not trimArg(args.title) then | ||
| + | dtitle = stitle | ||
| + | end | ||
end | end | ||
| − | if args.dtitle | + | if trimArg(args.dtitle) then |
| − | dtitle = | + | dtitle = trimArg(args.dtitle) |
italic = "" | italic = "" | ||
end | end | ||
| − | |||
| − | |||
| − | |||
| − | + | local dtitle = mw.ustring.gsub(dtitle,"%s+%([^%(]-%)$", "") -- remove disambiguation () | |
| + | local stitle = mw.ustring.gsub(stitle,"%s+%([^%(]-%)$", "") | ||
| + | local stitle = mw.ustring.gsub(stitle," ", "+") -- replace "<space>" with "+" | ||
| + | |||
| + | author = trimArg(args.author) | ||
| + | if not author then | ||
lname = "" | lname = "" | ||
else | else | ||
--- Split name into words, count words, set name to last word | --- Split name into words, count words, set name to last word | ||
| − | local N = mw.text.split( | + | local N = mw.text.split(author, " ") |
| − | local l, count = mw.ustring.gsub( | + | local l, count = mw.ustring.gsub(author, "%S+", "") |
lname = N[count] | lname = N[count] | ||
end | end | ||
| Line 53: | Line 63: | ||
return url | return url | ||
| + | end | ||
| + | |||
| + | function trimArg(arg) | ||
| + | if arg == "" or arg == nil then | ||
| + | return nil | ||
| + | else | ||
| + | return mw.text.trim(arg) | ||
| + | end | ||
end | end | ||
return p | return p | ||
Revision as of 00:55, 6 October 2015
Documentation for this module may be created at Module:Librivox book/sandbox/doc
local p = {}
function p.book(frame)
local pframe = frame:getParent()
local args = pframe.args
local tname = "Librivox book" -- name of calling template. Change if template rename.
local title = nil -- display and search title
local dtitle = nil -- display title (default: title)
local stitle = nil -- search title (default: title)
local lname = nil -- last name
local id = nil -- unsupported argument
local author = nil -- author
local tagline = "public domain audiobook at [[LibriVox]]"
local urlhead = "https://librivox.org/search?"
local italic = "''"
id = trimArg(args.id)
if id then
error("Error in Template:" .. tname .. " - id argument not supported - please see documentation at [[Template:Librivox author]]")
end
title = trimArg(args.title)
if not title then
title = mw.title.getCurrentTitle().text:gsub('%s+%([^%(]-%)$', '') -- Current page name without the final parentheses
dtitle = title
stitle = dtitle
else
dtitle = title
stitle = dtitle
end
if trimArg(args.stitle) then
stitle = trimArg(args.stitle)
if not trimArg(args.title) then
dtitle = stitle
end
end
if trimArg(args.dtitle) then
dtitle = trimArg(args.dtitle)
italic = ""
end
local dtitle = mw.ustring.gsub(dtitle,"%s+%([^%(]-%)$", "") -- remove disambiguation ()
local stitle = mw.ustring.gsub(stitle,"%s+%([^%(]-%)$", "")
local stitle = mw.ustring.gsub(stitle," ", "+") -- replace "<space>" with "+"
author = trimArg(args.author)
if not author then
lname = ""
else
--- Split name into words, count words, set name to last word
local N = mw.text.split(author, " ")
local l, count = mw.ustring.gsub(author, "%S+", "")
lname = N[count]
end
local url = "[[Image:Speaker Icon.svg|20px]] " .. "[" .. urlhead .. "title=" .. stitle .. "&author=" .. lname .. "&reader=&keywords=&genre_id=0&status=all&project_type=either&recorded_language=&sort_order=catalog_date&search_page=1&search_form=advanced" .. " " .. italic .. dtitle .. 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