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