Module:LCCN: Difference between revisions

Content deleted Content added
strlen == 0 optimization
unnecessary
 
(7 intermediate revisions by 3 users not shown)
Line 1:
require[[Module:No globals]]('strict')
local p = {}
 
Line 50:
local args = frame:getParent().args
local id = blank_to_nil(args[1] or args.id)
if not id then
error("Template:LCCN: You must provide an ID.")
end
local title = blank_to_nil(args[2] or args.title or args.name)
 
local left_part, right_part, url
local letter_width = (id:match("^%s*[0-9][0-9]") and id:len() < 10) and 0 or 2
if id then
local left_part, right_part= id:sub(1, urlletter_width + 2)
local letter_width = (id:match("^%s*[0-9][0-9]") and id:len() < 10) and 0 or 2
local right_part = expr(padright(id, letter_width + 8, '.00000'):sub(letter_width + 3, letter_width + 8))
local url = "https://lccnwww.loc.gov/item/" .. left_part .. padleft(right_part, 6, 0)
left_part = id:sub(1, letter_width + 2)
right_part = expr(padright(id, letter_width + 8, '.00000'):sub(letter_width + 3, letter_width + 8))
url = "https://lccn.loc.gov/" .. left_part .. padleft(right_part, 6, 0)
else
url = "https://lccn.loc.gov/Name?" .. mw.title.getCurrentTitle():partialUrl()
end
if args.long == "yes" then
return ("CatalogBibliographic record for [%s %s] at the United States [[LCCN (identifier)|Library of Congress]]"):format(
url, title or mw.title.getCurrentTitle().text)
end
if not left_part then
error("Template:LCCN: You must provide an ID.")
end
return ("[[LCCN (identifier)|LCCN]]&nbsp;[%s %s-%s]%s"):format(
url, left_part, right_part, title and ('&nbsp;&ndash;&nbsp;' .. title) or '')
title and ('&nbsp;&ndash;&nbsp;' .. title) or '')
end