Module:FBI QR code: Difference between revisions
From Hacks Guide Wiki
More actions
test... |
m Ihaveahax moved page Module:FBI QR codes to Module:FBI QR code without leaving a redirect: match template name |
||
| (27 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
local p = {} | 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]] | -- from [[Module:Infobox]] | ||
| Line 5: | Line 23: | ||
-- for the specified prefix. For example, if the prefix was 'data', and | -- for the specified prefix. For example, if the prefix was 'data', and | ||
-- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. | -- 'data1', 'data2', and 'data5' exist, it would return {1, 2, 5}. | ||
local function getArgNums(prefix) | local function getArgNums(prefix, args) | ||
local nums = {} | local nums = {} | ||
for k, v in pairs(args) do | for k, v in pairs(args) do | ||
| Line 15: | Line 33: | ||
end | end | ||
function p.makeSections(frame, args) | |||
local | local sections = {} | ||
for k, v in args | 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 | end | ||
return sections | |||
end | end | ||
function p. | 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 | end | ||
return p | return p | ||