Module:Check for unknown parameters: Difference between revisions

    m>Frietjes
    (rv, requires more testing)
    m>Frietjes
    (add optional regexp match)
    Line 17: Line 17:


    local res = {}
    local res = {}
    local regexps = {}
    local comments = {}
    local comments = {}
    local commentstr = ''
    local commentstr = ''
    -- create the list of known args, and the return string
    -- create the list of known args, regular expressions, and the return string
    for k, v in pairs(args) do
    for k, v in pairs(args) do
    if type(k) == 'number' then
    if type(k) == 'number' then
    Line 28: Line 29:
    if (k == 'unknown' and type(v) == 'string') then
    if (k == 'unknown' and type(v) == 'string') then
    unknown = v
    unknown = v
    elseif (mw.ustring.match(k, '^regexp[%d]*$') and type(v) == 'string') then
    table.insert(regexps, '^' .. v .. '$')
    end
    end
    end
    end
    Line 35: Line 38:
    for k,v in pairs(pargs) do
    for k,v in pairs(pargs) do
    if (type(k) == 'string' and knownargs[k] == nil) then
    if (type(k) == 'string' and knownargs[k] == nil) then
    if( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) then
    local knownflag = nil
    for r = 1,#regexps do
    if( mw.ustring.match(k,regexps[r]) ) then
    knownflag = 1
    end
    end
    if( (not knownflag) and ( (not ignoreblank) or (ignoreblank and isnotempty(v)) ) ) then
    k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
    k = mw.ustring.gsub(k, '[^%w\-_ ]', '?')
    local r = mw.ustring.gsub(unknown, '_VALUE_', k)
    local r = mw.ustring.gsub(unknown, '_VALUE_', k)