Module:Sandbox/RexxS/ScanParms explained

-- Test module to demo scanning of unknown parameters-- May be two parameters, representing url and text or just the url-- Parameters may be unnamed or specifically set as 1 and 2-- Problem arises when an unnamed parameter includes =

local p =

p.scan = function(frame)

if not frame:getParent.args then return nil -- or return "No arguments" if debugging end local keys = local vals = local url local text local ctr = 0 -- scan the parameters passed to see if they contain a period for k, v in pairs(frame:getParent.args) do k = tostring(k) if k:find(".", 1, true) then -- the parameter name has a . in it, so probably like www.xyz.com?a=n -- reconstruct parameter and set name to k1 or k2 ctr = ctr + 1 vals[#vals+1] = k .. "=" .. v keys[#keys+1] = "k" .. ctr else vals[#vals+1] = v keys[#keys+1] = k end end

-- now sort out which is url and which is text if #keys

0 then return nil -- or "No parameters passed" if debugging elseif #keys

1 then -- just a url supplied url = vals[1] text = vals[1] elseif ctr > 1 then -- more than one parameter name contained a period, so one is url, other is text url = vals[2] text = vals[1] elseif ctr

1 then -- just one parameter name contained a period, so that's the url if keys[1]

"k1" then -- it was the first one url = vals[1] text = vals[2] else -- it was the second one url = vals[2] text = vals[1] end else -- either no parameter name had colons or there's more than 2 parameters -- so bail out with a reasonable default url = vals[1] text = vals[2] end return "url=" .. url .. " -- text=" .. textend

return p