Module:Arguments: Difference between revisions
m>Mr. Stradivarius (oops, forgot the first parameter to tidyVal) |
m (3 revisions imported from templatewiki:Module:Arguments: see Topic:Vtixlm0q28eo6jtf) |
||
| (38 intermediate revisions by 26 users not shown) | |||
| Line 1: | Line 1: | ||
-- This module provides easy processing of arguments passed to Scribunto from #invoke. | -- This module provides easy processing of arguments passed to Scribunto from | ||
-- #invoke. It is intended for use by other Lua modules, and should not be | |||
-- called from #invoke directly. | |||
local libraryUtil = require('libraryUtil') | |||
local checkType = libraryUtil.checkType | |||
local arguments = {} | local arguments = {} | ||
function | -- Generate four different tidyVal functions, so that we don't have to check the | ||
-- options every time we call it. | |||
local function tidyValDefault(key, val) | |||
if type(val) == 'string' then | |||
val = val:match('^%s*(.-)%s*$') | |||
if val == '' then | |||
return nil | |||
else | |||
return val | |||
end | |||
else | |||
return val | |||
end | |||
end | |||
local function tidyValTrimOnly(key, val) | |||
if type(val) == 'string' then | |||
return val:match('^%s*(.-)%s*$') | |||
else | |||
return val | |||
end | |||
end | |||
local function tidyValRemoveBlanksOnly(key, val) | |||
if type(val) == 'string' then | |||
if val:find('%S') then | |||
if | return val | ||
else | |||
return nil | |||
end | |||
else | else | ||
return val | |||
end | end | ||
end | |||
local function tidyValNoChange(key, val) | |||
return val | |||
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) | |||
checkType('getArgs', 1, frame, 'table', true) | |||
checkType('getArgs', 2, options, 'table', true) | |||
frame = frame or {} | |||
options = options or {} | |||
--[[ | |||
-- Set up argument translation. | |||
--]] | |||
if | options.translate = options.translate or {} | ||
if options. | if getmetatable(options.translate) == nil then | ||