Module:Arguments: Difference between revisions
No edit summary |
m (3 revisions imported from templatewiki:Module:Arguments: see Topic:Vtixlm0q28eo6jtf) |
||
| (27 intermediate revisions by 23 users not shown) | |||
| Line 2: | Line 2: | ||
-- #invoke. It is intended for use by other Lua modules, and should not be | -- #invoke. It is intended for use by other Lua modules, and should not be | ||
-- called from #invoke directly. | -- called from #invoke directly. | ||
local libraryUtil = require('libraryUtil') | local libraryUtil = require('libraryUtil') | ||
local checkType = libraryUtil.checkType | local checkType = libraryUtil.checkType | ||
local arguments = {} | local arguments = {} | ||
-- Generate four different tidyVal functions, so that we don't have to check the | -- Generate four different tidyVal functions, so that we don't have to check the | ||
-- options every time we call it. | -- options every time we call it. | ||
local function tidyValDefault(key, val) | local function tidyValDefault(key, val) | ||
if type(val) == 'string' then | if type(val) == 'string' then | ||
| Line 23: | Line 23: | ||
end | end | ||
end | end | ||
local function tidyValTrimOnly(key, val) | local function tidyValTrimOnly(key, val) | ||
if type(val) == 'string' then | if type(val) == 'string' then | ||
| Line 31: | Line 31: | ||
end | end | ||
end | end | ||
local function tidyValRemoveBlanksOnly(key, val) | local function tidyValRemoveBlanksOnly(key, val) | ||
if type(val) == 'string' then | if type(val) == 'string' then | ||
| Line 43: | Line 43: | ||
end | end | ||
end | end | ||
local function tidyValNoChange(key, val) | local function tidyValNoChange(key, val) | ||
return val | return val | ||
end | end | ||
local function matchesTitle(given, title) | |||
local tp = type( given ) | |||
return (tp == 'string' or tp == 'number') and mw.title.new( given ).prefixedText == title | |||
end | |||
local translate_mt = { __index = function(t, k) return k end } | |||
function arguments.getArgs(frame, options) | function arguments.getArgs(frame, options) | ||
checkType('getArgs', 1, frame, 'table', true) | checkType('getArgs', 1, frame, 'table', true) | ||
| Line 53: | Line 60: | ||
frame = frame or {} | frame = frame or {} | ||
options = options or {} | options = options or {} | ||
--[[ | --[[ | ||
-- Get the arguments | -- Set up argument translation. | ||
-- | --]] | ||
-- | options.translate = options.translate or {} | ||
if getmetatable(options.translate) == nil then | |||
setmetatable(options.translate, translate_mt) | |||
end | |||
if options.backtranslate == nil then | |||
options.backtranslate = {} | |||
for k,v in pairs(options.translate) do | |||
options.backtranslate[v] = k | |||
end | |||
end | |||
if options.backtranslate and getmetatable(options.backtranslate) == nil then | |||
setmetatable(options.backtranslate, { | |||
__index = function(t, k) | |||
if options.translate[k] ~= k then | |||
return nil | |||
else | |||
return k | |||
end | |||
end | |||
}) | |||
end | |||
--[[ | |||
-- Get the argument tables. If we were passed a valid frame object, get the | |||
-- frame arguments (fargs) and the parent frame arguments (pargs), depending | |||
-- on the options set and on the parent frame's availability. If we weren't | |||
-- passed a valid frame object, we are being called from another Lua module | |||
-- or from the debug console, so assume that we were passed a table of args | |||
-- | |||