local p =
local subtable = subtable[1] = " @r+" subtable[2] = "%%3D@r=" -- Encode substitutions are done using a table in index order subtable[3] = "%%26@r&" subtable[4] = "%%3A@r:" subtable[5] = "%%2F@r/" subtable[6] = "%%3F@r?"
function p.encode(frame) local lookfor = "" local replace = "" local a_str = frame.args[1] or "" -- Get URL to process local link = frame.args[2] or "" -- Create a Link if present otherwise return string local option = frame.args[3] or "wikipedia" -- Dummy argument for future special action -- Assumption that a_str begins with http/https/file etc. otherwise -- might force a_str to have "http://" as leading chars - not included -- at this time
-- DECODE 1st? a_str = a_str:gsub ("+", " ") a_str = a_str:gsub ("%%(%x%x)", function(h) return string.char(tonumber(h,16)) end)
a_str = string.gsub (a_str,"([^%w %-%_%.%~])", function (c) return string.format ("%%%02X", string.byte(c)) end)
for i = 1, #subtable, 1 do lookfor = string.gsub(subtable[i],"@r(.*)","") replace = string.gsub(subtable[i],"^(.*)@r","") a_str = a_str:gsub(lookfor,replace) end
if link ~= "" then a_str = "[" .. a_str .. " " .. link .. "]" end
return a_str
end
return p