No edit summary |
m (Ihaveahax moved page Module:FBI QR codes to Module:FBI QR code without leaving a redirect: match template name) |
||
(14 intermediate revisions by the same user not shown) | |||
Line 38: | Line 38: | ||
for k, v in ipairs(nums) do | for k, v in ipairs(nums) do | ||
local name = args['name' .. tostring( | local name = args['name' .. tostring(v)] | ||
local url = args['url' .. tostring( | local url = args['url' .. tostring(v)] | ||
if name and url then | if name and url then | ||
local qr = frame: | local qr = frame:expandTemplate( { title = 'qrlite', args = { url, format = 'png', margin = '3' } } ) | ||
table.insert(sections, {name, qr.. | table.insert(sections, {name, '<p class="hb-qrcode-image">'..qr..'</p><p class="hb-qrcode-link">['..url..' '..url..']</p>'}) | ||
end | end | ||
end | end | ||
Line 52: | Line 52: | ||
local finalSections = '' | local finalSections = '' | ||
for k, v in ipairs(sections) do | for k, v in ipairs(sections) do | ||
finalSections = finalSections..' | finalSections = finalSections..'|-|'..v[1]..'='..v[2] | ||
end | end | ||
Line 59: | Line 59: | ||
function p.makeTabber(frame, sections) | function p.makeTabber(frame, sections) | ||
return frame:callParserFunction('#tag', ' | return frame:callParserFunction('#tag', 'tabber', p.makeTabberData(sections)) | ||
end | end | ||
Line 70: | Line 70: | ||
function p.template(frame) | function p.template(frame) | ||
local sections = p.makeSections(frame | local args = {} | ||
for k,v in pairs(frame.args) do args[k] = mw.text.trim(v) end | |||
local sections = p.makeSections(frame, args) | |||
return p.makeTabber(frame, sections) | return p.makeTabber(frame, sections) | ||
end | end | ||
return p | return p |
Latest revision as of 05:24, 31 October 2024
Documentation for this module may be created at Module:FBI QR code/doc
local p = {}
-- from [[Module:Infobox]]
-- Returns the union of the values of two tables, as a sequence.
local function union(t1, t2)
local vals = {}
for k, v in pairs(t1) do
vals[v] = true
end
for k, v in pairs(t2) do
vals[v] = true
end
local ret = {}
for k, v in pairs(vals) do
table.insert(ret, k)
end
return ret
end
-- from [[Module:Infobox]]
-- Returns a table containing the numbers of the arguments that exist
-- for the specified prefix. For example, if the prefix was 'data', and
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}.
local function getArgNums(prefix, args)
local nums = {}
for k, v in pairs(args) do
local num = tostring(k):match('^' .. prefix .. '([1-9]%d*)$')
if num then table.insert(nums, tonumber(num)) end
end
table.sort(nums)
return nums
end
function p.makeSections(frame, args)
local sections = {}
local nums = union(getArgNums('name', args), getArgNums('url', args))
for k, v in ipairs(nums) do
local name = args['name' .. tostring(v)]
local url = args['url' .. tostring(v)]
if name and url then
local qr = frame:expandTemplate( { title = 'qrlite', args = { url, format = 'png', margin = '3' } } )
table.insert(sections, {name, '<p class="hb-qrcode-image">'..qr..'</p><p class="hb-qrcode-link">['..url..' '..url..']</p>'})
end
end
return sections
end
function p.makeTabberData(sections)
local finalSections = ''
for k, v in ipairs(sections) do
finalSections = finalSections..'|-|'..v[1]..'='..v[2]
end
return finalSections
end
function p.makeTabber(frame, sections)
return frame:callParserFunction('#tag', 'tabber', p.makeTabberData(sections))
end
function p.main(frame)
local parent = frame:getParent()
local sections = p.makeSections(parent, parent.args)
return p.makeTabber(parent, sections)
end
function p.template(frame)
local args = {}
for k,v in pairs(frame.args) do args[k] = mw.text.trim(v) end
local sections = p.makeSections(frame, args)
return p.makeTabber(frame, sections)
end
return p