Permanently protected module
From Wikipedia, the free encyclopedia


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 (default: article name w/out dab)

  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

  end

  dtitle = mw.ustring.gsub(title,'%s+%([^%(]-%)$', '')        -- Remove the final disambig paren

  stitle = dtitle



  if trimArg(args.stitle) then

    stitle = trimArg(args.stitle)

    if not trimArg(args.title) then                           -- For when used outside main article space

      dtitle = stitle

    end

  end

  if trimArg(args.dtitle) then

    dtitle = trimArg(args.dtitle)

    italic  = ""

  end



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

  end



  local url = "[[File:Speaker Icon.svg|15px|link=|alt=]] " .. "[" .. 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