1 месяц назад История
README.md

lua-percented

Модуль для Lua для процентного кодирования и декодирования по умолчанию кодирует или декодирует весь заданный ввод, но имеется возможность задать свои правилам, такие как:

  • какие байты ввода не кодировать, а выводить как есть;
  • какие байты ввода не кодировать, а заменять на другие;

Это позволяет например кодировать компоненты URL адресов по заданным правилам, и/или декодировать их (или адреса целиком).

Подходит для любой версии Lua из:

  • Luajit
  • Lua5.1
  • Lua5.2
  • Lua5.3
  • Lua5.3

Зависимости

sudo apt install lua

Установка и удаление

Глобально

sudo make install
sudo make uninstall

Локально

make PREFIX=$HOME/.local install
make PREFIX=$HOME/.local uninstall

Независимо

make DESTDIR=$HOME/some_you_dir install
make DESTDIR=$HOME/some_you_dir uninstall

Использование

Минимальный пример

local percented = require('percented')
local enc, err = percented.encode('Привет World')
if err then
   error(err)
end
print(enc)
----------
local dec,err = percented.decode(enc)
if err then
   error(err)
end
print(dec)
----------
lua example.lua
%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%57%6F%72%6C%64
Привет World

Пример использования кодирования по своим правилам

local percented = require('percented')

local ignore = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~";
local replace_from = " ";
local replace_to   = "+";
local stat,err = percented.register(ignore,replace_from,replace_to,'my_rule')
if err then
   error(err)
end
----------
local enc, err = percented.encode('Привет World','my_rule')
if err then
   error(err)
end
print(enc)
----------
local dec,err = percented.decode(enc,'my_rule')
if err then
   error(err)
end
print(dec)
----------
lua example.lua
%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82+World
Привет World

Описание API

----------------------------------------------------------
-- optional string : ignore - no encode this bytes
-- optional string : replace_from - change this bytes
-- optional string : replace_to   - change on this bytes
----------------------------------------------------------
optional for replace_to and replace_from only if all this
is nil, need corrent replace pair, in replace pair not
allow use reserved '%' symbol, in replace pair must be only
unique bytes, repeat bytes in replace_from and replace_to
not  allowed. Optional from ignore if you need encode
all, but some bytes need only replace and not encode
-----------------------------------------------------------
-- return boolean  : true,nil or false,error_string
-----------------------------------------------------------

percented.register(ignore,replace_from,replace_to,rule_name)

-----------------------------------------------------------
-- required string : input_data : string with any bytedata
-- optional string : rule_name  : you name for you prepared rule
-----------------------------------------------------------
-- return string   : encoded_string or nil,error_string
-----------------------------------------------------------

percented.encode(input_data,rule_name)

-----------------------------------------------------------
-- required string : input_data : percented encoded data
-- optional string : rule_name  : you name for you prepared rule
-----------------------------------------------------------
-- return string   : decoced_data or nil,error_string
-----------------------------------------------------------

percented.decode(input_data,basename)

На заметку

Кажется всё работает правильно. Потоковый механизм кодирования и декодирования в планах.

Описание

Процентное кодирование и декодирование на Lua

Конвейеры
0 успешных
0 с ошибкой