Module:Arguments: Difference between revisions

    From Nonbinary Wiki
    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 from the frame object if available. If the frame object
    -- Set up argument translation.
    -- is not available, we are being called from another Lua module or from the
    --]]
    -- debug console, so assign the args to a new variable so we can
    options.translate = options.translate or {}
    -- differentiate them.
    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
    -- directly, and assign it to a new variable (luaArgs).
    </