You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
788 B
39 lines
788 B
-- 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
|
|
|