Advertisement
Rochet2

Encode a character

Dec 23rd, 2015
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 0.94 KB | None | 0 0
  1. local gsub = gsub or string.gsub
  2. local Encoder = {}
  3.  
  4. local DEFAULT_ENCODER = '$'
  5.  
  6. local coders = {
  7.     ['<'] = '{',
  8.     ['>'] = '{',
  9. }
  10.  
  11. function Encoder.Encode(str, encoded, encoder)
  12.     encoder = ((encoder and coders[encoder]) or encoder) or DEFAULT_ENCODER
  13.     if encoded == encoder then return str end
  14.     local escaped_encoded = gsub(encoded, "[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%0")
  15.     local escaped_encoder = gsub(encoder, "[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%0")
  16.     return (gsub((gsub(str, '([<>])'..escaped_encoder, '%1>'..encoder)), escaped_encoded, '<'..encoder))
  17. end
  18.  
  19. function Encoder.Decode(str, encoded, encoder)
  20.     encoder = ((encoder and coders[encoder]) or encoder) or DEFAULT_ENCODER
  21.     if encoded == encoder then return str end
  22.     local escaped_encoder = gsub(encoder, "[%(%)%.%%%+%-%*%?%[%]%^%$]", "%%%0")
  23.     return (gsub((gsub(str, '<'..escaped_encoder, encoded)), '>'..escaped_encoder, encoder))
  24. end
  25.  
  26. return Encoder
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement