23 lines
474 B
Text
23 lines
474 B
Text
|
#!/usr/bin/env lua
|
||
|
|
||
|
local args do
|
||
|
local parse = require 'arrr' {
|
||
|
{ "Unescape instead of escaping", "--decode", "-d" };
|
||
|
}
|
||
|
args = parse{...}
|
||
|
end
|
||
|
|
||
|
local pattern, replace
|
||
|
if args.decode then
|
||
|
pattern, replace = "%%%x%x", function(escape)
|
||
|
return string.char(tonumber(escape:sub(2, 3), 16))
|
||
|
end
|
||
|
else
|
||
|
pattern = "[:/?#@!$&'()*+,;=[%]%%\n ]"
|
||
|
replace = function(plain)
|
||
|
return string.format("%%%0X", plain:byte())
|
||
|
end
|
||
|
end
|
||
|
|
||
|
io.write((io.read("a*"):gsub(pattern, replace)))
|