54 lines
797 B
Lua
54 lines
797 B
Lua
|
|
local escapes = {
|
|
{"\\", "b"},
|
|
{"\t", "t"},
|
|
{"\n", "n"},
|
|
{"\r", "r"},
|
|
{"\'", "a"},
|
|
{"\"", "q"},
|
|
{";" , "s"},
|
|
{":" , "c"},
|
|
}
|
|
|
|
function expandescape(str)
|
|
local ostrt = {}
|
|
|
|
local len = #str
|
|
for i=1, len do
|
|
local ci = str:sub(i, i)
|
|
|
|
local co = ci
|
|
for escidx, esc in ipairs(escapes) do
|
|
if ci==esc[1] then co = "\\"..esc[2] end
|
|
end
|
|
|
|
table.insert(ostrt, co)
|
|
end
|
|
|
|
return table.concat(ostrt)
|
|
end
|
|
|
|
function collapseescape(str)
|
|
local ostrt = {}
|
|
|
|
local i = 1
|
|
local len = #str
|
|
while i<=len do
|
|
local ci = str:sub(i, i)
|
|
|
|
local co = ci
|
|
if ci=="\\" and i<len then
|
|
i = i+1
|
|
ci = str:sub(i, i)
|
|
for escidx, esc in ipairs(escapes) do
|
|
if ci==esc[2] then co = esc[1] end
|
|
end
|
|
end
|
|
|
|
table.insert(ostrt, co)
|
|
i = i+1
|
|
end
|
|
|
|
return table.concat(ostrt)
|
|
end
|