Module:Arguments: Difference between revisions

    From Nonbinary Wiki
    <
    m (1 revision imported from w:en:Module:Arguments)
    (Blanked the page)
    Line 1: Line 1:
    -- 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 = {}
    -- 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
    return val
    else
    return nil
    end
    else
    return val
    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.
    --]]
    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