Line 2:
Line 2:
local Utils = {}
local Utils = {}
−
function Utils.method(frame)
+
-- * Collection functions.
−
local m = require("Module:" .. frame.args[1])
−
local f = frame.args[2]
−
local args = {}
−
for k, v in ipairs(frame.args) do
−
if type(k) == "number" and k >= 3 and type(v) == "string" then
−
table.insert(args, v)
−
end
−
end
−
return m[f](m, unpack(args))
−
end
function Utils.find(tbl, v_, k_)
function Utils.find(tbl, v_, k_)
Line 52:
Line 42:
end
end
end
end
+
+
-- * Calling arbitrary Lua functions using #invoke.
+
+
-- Used to call Formatting:tooltip in Template:Tooltip, mainly because Lua code properly escapes characters,
+
-- so that span's title attribute always works.
+
function Utils.method(frame)
+
local m = require("Module:" .. frame.args[1])
+
local f = frame.args[2]
+
local args = {}
+
for k, v in ipairs(frame.args) do
+
if type(k) == "number" and k >= 3 and type(v) == "string" then
+
table.insert(args, v)
+
end
+
end
+
return m[f](m, unpack(args))
+
end
+
+
-- * Frame functions.
local getArgs = require("Module:GetArgs")
local getArgs = require("Module:GetArgs")
+
-- Unused.
function Utils.getContext(frame)
function Utils.getContext(frame)
local frame1 = frame:getParent()
local frame1 = frame:getParent()
Line 69:
Line 78:
end
end
−
function Utils.test_context(frame)
+
-- getParent -> getArgs
−
local context = Utils.getContext(frame)
+
function Utils.getParentArgs(frame)
−
return "arg = " .. (context.args.arg or "?") .. " @ " .. (context.pagename or "?")
+
local frame1 = frame:getParent()
+
if frame1 then
+
return getArgs{ frame = frame1 }
+
else
+
return nil
+
end
+
end
+
+
-- getArgs + getParent -> getArgs, "implicit" args can be defined in the template (e.g. pagename={{PAGENAME}})
+
-- "explicit" args are user defined.
+
function Utils.getTemplateArgs(frame)
+
local frame1 = frame:getParent()
+
if frame1 then
+
return { implicit = getArgs{ frame = frame }, explicit = getArgs{ frame = frame1 } }
+
else
+
return { implicit = getArgs{ frame = frame }, explicit = {} }
+
end
end
end
return Utils
return Utils