Difference between revisions of "Module:Sandbox/Ahecht/Catalog lookup link"
< Module:Sandbox | Ahecht
Jump to navigation
Jump to search
blackwiki>Ahecht (←Created page with 'local p = {} function p.main(frame) local args = {} -- discard empty parameters and trim whitespace for k, v in frame:getParent().args do if v and mw.ust...') |
m (4 revisions imported) |
||
| (3 intermediate revisions by one other user not shown) | |||
| Line 3: | Line 3: | ||
function p.main(frame) | function p.main(frame) | ||
local args = {} | local args = {} | ||
| + | local out = '' | ||
| + | local defaultSeparator = ', ' | ||
| + | local lockIcon = { | ||
| + | ['free'] = '[[File:Lock-green.svg|9px|link=|alt=Freely accessible|Freely accessible]]', | ||
| + | ['registration'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free registration required|Free registration required]]', | ||
| + | ['limited'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free access subject to limited trial, subscription normally required|Free access subject to limited trial, subscription normally required]]', | ||
| + | ['subscription'] = '[[File:Lock-red-alt.svg|9px|link=|alt=Paid subscription required|Paid subscription required]]', | ||
| + | } | ||
-- discard empty parameters and trim whitespace | -- discard empty parameters and trim whitespace | ||
| − | for k, v in frame:getParent().args do | + | for k, v in pairs(frame:getParent().args) do |
if v and mw.ustring.match(v,'%S') then args[k] = mw.text.trim(v) end | if v and mw.ustring.match(v,'%S') then args[k] = mw.text.trim(v) end | ||
end | end | ||
| − | |||
if args[1] then | if args[1] then | ||
local i = 1 | local i = 1 | ||
| Line 17: | Line 24: | ||
if args['article-link'] or args['article-name'] then | if args['article-link'] or args['article-name'] then | ||
if args['article-link'] then | if args['article-link'] then | ||
| − | + | out = '[[' .. args['article-link'] .. '|' .. (args['article-name'] or args['article-link']) .. ']]' | |
else | else | ||
| − | + | out = args['article-name'] | |
end | end | ||
| − | + | out = out .. (args['article-postfix'] or '') .. ' ' | |
else | else | ||
| − | + | out = (args['article-postfix'] or '') | |
end | end | ||
else -- otherwise, add separator | else -- otherwise, add separator | ||
if ( (not args[i+1]) and args['list-leadout'] ) then -- if last item | if ( (not args[i+1]) and args['list-leadout'] ) then -- if last item | ||
if mw.ustring.match(mw.ustring.sub(args['list-leadout'],1,1), '[%a]') then | if mw.ustring.match(mw.ustring.sub(args['list-leadout'],1,1), '[%a]') then | ||
| − | + | out = out .. ' ' | |
end | end | ||
| − | + | out = out .. args['list-leadout'] .. args['leadout-postfix'] .. ' ' | |
else -- if not last item or list-leadout isn't specified | else -- if not last item or list-leadout isn't specified | ||
| − | + | out = out .. (args['list-separator'] or defaultSeparator) | |
end | end | ||
end | end | ||
| Line 40: | Line 47: | ||
if args['link-prefix'] then | if args['link-prefix'] then | ||
item = '[' .. args['link-prefix'] .. mw.uri.encode(args[i]) .. (args['link-postfix'] or '') .. ' '.. item .. ']' | item = '[' .. args['link-prefix'] .. mw.uri.encode(args[i]) .. (args['link-postfix'] or '') .. ' '.. item .. ']' | ||
| + | if lockIcon[args['url-access']] then | ||
| + | item = item .. '<span style="padding-left:0.15em;">' .. lockIcon[args['url-access']] .. '</span>' | ||
| + | end | ||
end | end | ||
| − | + | out = out .. item | |
i = i + 1 | i = i + 1 | ||
end | end | ||
end | end | ||
| − | return | + | if lockIcon[args['url-access']] or args['plain-links'] then |
| + | out = '<span class="plainlinks">' .. out .. '</span>' | ||
| + | end | ||
| + | |||
| + | return out | ||
end | end | ||
return p | return p | ||
Latest revision as of 09:14, 27 September 2020
Documentation for this module may be created at Module:Sandbox/Ahecht/Catalog lookup link/doc
local p = {}
function p.main(frame)
local args = {}
local out = ''
local defaultSeparator = ', '
local lockIcon = {
['free'] = '[[File:Lock-green.svg|9px|link=|alt=Freely accessible|Freely accessible]]',
['registration'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free registration required|Free registration required]]',
['limited'] = '[[File:Lock-blue-alt-2.svg|9px|link=|alt=Free access subject to limited trial, subscription normally required|Free access subject to limited trial, subscription normally required]]',
['subscription'] = '[[File:Lock-red-alt.svg|9px|link=|alt=Paid subscription required|Paid subscription required]]',
}
-- discard empty parameters and trim whitespace
for k, v in pairs(frame:getParent().args) do
if v and mw.ustring.match(v,'%S') then args[k] = mw.text.trim(v) end
end
if args[1] then
local i = 1
while args[i] do
if i == 1 then -- if first item, add article link
if args['article-link'] or args['article-name'] then
if args['article-link'] then
out = '[[' .. args['article-link'] .. '|' .. (args['article-name'] or args['article-link']) .. ']]'
else
out = args['article-name']
end
out = out .. (args['article-postfix'] or '') .. ' '
else
out = (args['article-postfix'] or '')
end
else -- otherwise, add separator
if ( (not args[i+1]) and args['list-leadout'] ) then -- if last item
if mw.ustring.match(mw.ustring.sub(args['list-leadout'],1,1), '[%a]') then
out = out .. ' '
end
out = out .. args['list-leadout'] .. args['leadout-postfix'] .. ' '
else -- if not last item or list-leadout isn't specified
out = out .. (args['list-separator'] or defaultSeparator)
end
end
-- generate link
local item = (args['item-prefix'] or '') .. args[i] .. (args['item-postfix'] or '')
if args['link-prefix'] then
item = '[' .. args['link-prefix'] .. mw.uri.encode(args[i]) .. (args['link-postfix'] or '') .. ' '.. item .. ']'
if lockIcon[args['url-access']] then
item = item .. '<span style="padding-left:0.15em;">' .. lockIcon[args['url-access']] .. '</span>'
end
end
out = out .. item
i = i + 1
end
end
if lockIcon[args['url-access']] or args['plain-links'] then
out = '<span class="plainlinks">' .. out .. '</span>'
end
return out
end
return p