Content deleted Content added
MusikBot II (talk | contribs) m Protected "Module:LCCN": High-risk template or module: 1661 transclusions (more info) ([Edit=Require autoconfirmed or confirmed access] (indefinite)) |
unnecessary |
||
(20 intermediate revisions by 3 users not shown) | |||
Line 1:
require('strict')
local p = {}
local function blank_to_nil(s)
if s and #s > 0 then return s end
end
local function
padlen = tonumber(padlen) or 0
if 1 > select('#', ...) then
return ("0"):rep(padlen)
end▼
local padsrc = tostring((...))
local srclen = mw.ustring.len(padsrc)
if 1 > padlen or 1 > srclen then
return ""
end
return mw.ustring.sub(mw.ustring.rep(padsrc, math.ceil(padlen / srclen)), 1, padlen)
end
local function
str = tostring(str)
if 1 > select('#', ...) then
return str
end
local strlen = mw.ustring.len(str)
return pad((...), select(2, ...))
end
return pad((tonumber((...)) or 0) - strlen, select(2, ...)) .. str
end
local function
str = tostring(str)
if 1 > select('#', ...) then
return str
end
local strlen = mw.ustring.len(str)
return pad((...), select(2, ...))
end
return str .. pad((tonumber((...)) or 0) - strlen , select(2, ...))
end
local function expr(...)
return mw.ext.ParserFunctions.expr( ... )
end
Line 20 ⟶ 50:
local args = frame:getParent().args
local id = blank_to_nil(args[1] or args.id)
if not id then
local title = blank_to_nil(args[2] or args.title or args.name)▼
error("Template:LCCN: You must provide an ID.")▼
local left_part, right_part, url▼
▲ if id then
local letter_width = (id:match("^%s*[0-9][0-9]") and id:len() < 10) and 0 or 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)▼
end
▲ local title = blank_to_nil(args[2] or args.title or args.name)
▲
if args.long == "yes" then
return ("
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]] [%s %s-%s]%s"):format(
url, left_part, right_part, title and (' – ' .. title) or '')
end
|