1
0

Removed some debug prints, and improved code structure

This commit is contained in:
Jon Michael Aanes 2017-07-22 13:53:15 +02:00
parent 6f7e767b68
commit 6021ff8ec6

View File

@ -40,34 +40,38 @@ local CHARACTERS_THAT_REQUIRE_ESCAPE_SEQ = '[%z\001-\008\011-\031\127]'
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- Util -- Util
local function requires_weird_escape_seq (str) local function does_string_require_escaping (str)
return not not str:find(CHARACTERS_THAT_REQUIRE_ESCAPE_SEQ) return not not str:find(CHARACTERS_THAT_REQUIRE_ESCAPE_SEQ)
end end
local function escape_string (str) local escape_string do
local ESCAPE_SINGLE_BYTE = function (char) return CHAR_TO_STR_REPR[char:byte()] end
local ESCAPE_MALFORMED_CONT_BYTE = function (a, b) return a..'\\' .. b:byte() end
local ESCAPE_MALFORMED_START_BYTE = function (a, b) return '\\'..a:byte() .. b end
function escape_string (str)
-- Attempts to escape the string, to a format that is both a valid Lua -- Attempts to escape the string, to a format that is both a valid Lua
-- constant, and ledible unicode. -- constant, and ledible unicode.
-- TODO: Escape invalid unicode sequences.
-- Error checking -- Error checking
assert(type(str) == 'string') assert(type(str) == 'string')
-- First escape the easy ones. -- Escape single bytes
local str = str:gsub('.', function (char) return CHAR_TO_STR_REPR[char:byte()] end) local str, count = str:gsub('.', ESCAPE_SINGLE_BYTE), 0
-- Escape malformed continuation characters
repeat -- Escape malformed continuation bytes
local count repeat str, count = str:gsub('([^\128-\255])([\128-\191])', ESCAPE_MALFORMED_CONT_BYTE)
str, count = str:gsub('([^\128-\255])([\128-\191])', function(a, b) print(a,b) return a..'\\' .. b:byte() end)
until count == 0 until count == 0
-- Escape malformed start characters
repeat -- Escape malformed start bytes
local count repeat str, count = str:gsub('([\191-\255])([^\128-\191])', ESCAPE_MALFORMED_START_BYTE)
str, count = str:gsub('([\191-\255])([^\128-\191])', function(a, b) print(a,b) return '\\'..a:byte() .. b end)
until count == 0 until count == 0
-- return
-- Done, lets return
return str return str
end end
end
local function smallest_secure_longform_string_level (str) local function smallest_secure_longform_string_level (str)
-- Determines the level a longform string needs to use, to avoid code -- Determines the level a longform string needs to use, to avoid code
@ -189,7 +193,7 @@ return function (str, depth, l)
return format_shortform_string(str, depth, l) return format_shortform_string(str, depth, l)
elseif depth > 0 then elseif depth > 0 then
return format_cut_string (str, depth, l) return format_cut_string (str, depth, l)
elseif requires_weird_escape_seq (str) then elseif does_string_require_escaping (str) then
return format_concatted_string(str, depth, l) return format_concatted_string(str, depth, l)
else else
return format_longform_string(str, depth, l) return format_longform_string(str, depth, l)