Module:Utils
Jump to navigation
Jump to search
Utility functions to help creating modules
def(value, default)
- Returns
valueif it is notnilor"", anddefaultotherwise
_a(arg)
- Extracts the argument from the common ways mediawiki passes arguments to modules:
- if
argis not a table, it is returned as is (Called from Lua like a function) - if
argis a table and that table has aargsfield,arg.args[1]is returned (Called from MediaWiki’s {{#invoke:}} parser function) - if
argis a table but doesn’t contain anargsfield,args[1]is returned (Called with a table as an argument list[1])
- if
date(y, m, d, short = false)
- Formats a date.
- If
shortis set totrue, uses shortened months name instead of full length month names.
- ↑ Some mediawiki functions do that, idk why — Annwan
local _m = {}
--- Return a if not `nil` or the empty string, or b otherwise
_m.def = function(a, b)
return (a ~= nil and a ~= "") and a or b
end
--- Extracts the argument from all the reasonable ways an argument may have been passed
_m._a = function (x)
if type(x) ~= "table" then
return x
end
-- Did we get a frame
if type(x.args) == "table" then return x.args[1] end
-- Also support passing the argument in a table
return x[1]
end
_m.date = function(y, m, d, short)
local months
if short then months = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}
else months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}
end
return tostring(d) .. " " .. tostring(months[m]) .. " " .. tostring(y)
end
_m.json = function(frame, data)
return '<pre id="jsondata">' .. frame:callParserFunction( "#tag:nowiki", mw.text.jsonEncode(data)) .. '</pre>'
end
return _m