-- Unindenting transforms a string like this: -- [[ -- { -- foo = 1, -- bar = 2 -- } -- ]] -- -- Into the same one without indentation, nor start/end newlines -- -- [[{ -- foo = 1, -- bar = 2 -- }]] -- -- This makes the strings look and read better in the tests -- local getIndentPreffix = function(str) local level = math.huge local minPreffix = "" local len for preffix in str:gmatch("\n( +)") do len = #preffix if len < level then level = len minPreffix = preffix end end return minPreffix end local unindent = function(str) str = str:gsub(" +$", ""):gsub("^ +", "") -- remove spaces at start and end local preffix = getIndentPreffix(str) return (str:gsub("\n" .. preffix, "\n"):gsub("\n$", "")) end return unindent