Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Sandbox/Matroc/Testurlencode

From Wikipedia, the free encyclopedia
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