Patch title: Release 87 bulk changes
Abstract:
File: /pliant/util/encoding/http.pli
Key:
    Removed line
    Added line
   
abstract
  [HTTP protocol encoding/decoding]


abstract
  [HTTP protocol encoding/decoding]


gvar (Array uInt8 256) http_code := general_code "_"
http_code " ":number := "+" number


# the standard HTTP encoding

gvar (Array uInt8 256) http_code := general_code "_.:@/$-+!*'(),"

function http_encode clear -> encoded
  arg Str clear encoded
  encoded := general_encode clear "%":number http_code

function http_decode encoded -> ascii
  arg Str encoded ascii
function http_encode clear -> encoded
  arg Str clear encoded
  encoded := general_encode clear "%":number http_code

function http_decode encoded -> ascii
  arg Str encoded ascii
  ascii := general_decode (replace encoded "+" " ") "%":numb
  ascii := general_decode encoded "%":number

export http_encode http_decode

export http_encode http_decode


# slash encoding is the minimal encoding to remove '/' in order to prepare futher parsing

gvar (Array uInt8 256) slash_code
function setup
  for (var Int u) 0 255
    slash_code u := shunt u<>"%":number and u<>"/":number u 0
setup

function http_slash_encode clear -> encoded
  arg Str clear encoded
  encoded := general_encode clear "%":number slash_code

function http_slash_decode encoded -> ascii
  arg Str encoded ascii
  ascii := general_decode encoded "%":number

export http_slash_encode http_slash_decode