Add tab outside of indent check
This commit is contained in:
parent
6757de1be8
commit
22a047b3b1
|
|
@ -889,6 +889,72 @@ on_run(function ()
|
||||||
end
|
end
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- No tab character should exist after indentation
|
||||||
|
table.insert(checks, {
|
||||||
|
Name = "tab outside of indent",
|
||||||
|
Check = function (moduleName)
|
||||||
|
local files = table.join(
|
||||||
|
os.files("include/Nazara/" .. moduleName .. "/**.hpp"),
|
||||||
|
os.files("include/Nazara/" .. moduleName .. "/**.inl"),
|
||||||
|
os.files("src/Nazara/" .. moduleName .. "/**.hpp"),
|
||||||
|
os.files("src/Nazara/" .. moduleName .. "/**.inl"),
|
||||||
|
os.files("src/Nazara/" .. moduleName .. "/**.cpp")
|
||||||
|
)
|
||||||
|
|
||||||
|
local fixes = {}
|
||||||
|
|
||||||
|
for _, filePath in pairs(files) do
|
||||||
|
local lines = GetFile(filePath)
|
||||||
|
|
||||||
|
local fileFixes = {}
|
||||||
|
for i = 1, #lines do
|
||||||
|
local start = lines[i]:match("\t*[^\t+]()\t")
|
||||||
|
if start then
|
||||||
|
table.insert(fileFixes, { line = i, start = start })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if #fileFixes > 0 then
|
||||||
|
print(filePath .. " has tab character outside of indentation")
|
||||||
|
table.insert(fixes, {
|
||||||
|
File = filePath,
|
||||||
|
Func = function (lines)
|
||||||
|
for _, fix in ipairs(fileFixes) do
|
||||||
|
-- compute indent taking tabs into account
|
||||||
|
local function ComputeIndent(str, i)
|
||||||
|
local indent = 0
|
||||||
|
for i = 1, i do
|
||||||
|
if str:sub(i, i) == "\t" then
|
||||||
|
-- round up to tabSize (4)
|
||||||
|
indent = ((indent + 4) // 4) * 4
|
||||||
|
else
|
||||||
|
indent = indent + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return indent
|
||||||
|
end
|
||||||
|
|
||||||
|
lines[fix.line] = lines[fix.line]:gsub("()\t", function (pos)
|
||||||
|
if pos < fix.start then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local indent = ComputeIndent(lines[fix.line], pos - 1)
|
||||||
|
local indent2 = ComputeIndent(lines[fix.line], pos)
|
||||||
|
return string.rep(" ", indent2 - indent)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
UpdateFile(filePath, lines)
|
||||||
|
end
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return fixes
|
||||||
|
end
|
||||||
|
})
|
||||||
|
|
||||||
local shouldFix = option.get("fix") or false
|
local shouldFix = option.get("fix") or false
|
||||||
|
|
||||||
for _, check in pairs(checks) do
|
for _, check in pairs(checks) do
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue