From ab690398b7fb998a889d6cee9866f9d570c1bc8b Mon Sep 17 00:00:00 2001 From: Jean-Patrick Guerrero Date: Tue, 30 Nov 2021 18:39:35 +0100 Subject: [PATCH] Add script for Luacheck --- .luacheckrc | 1 + luacheck.lua | 129 ++++++++++++++++++++++++++++++++++++++++++++++ src/common.lua | 1 - src/gui.lua | 2 +- src/operators.lua | 4 +- 5 files changed, 133 insertions(+), 4 deletions(-) create mode 100755 luacheck.lua diff --git a/.luacheckrc b/.luacheckrc index 37418f9..9b1049c 100644 --- a/.luacheckrc +++ b/.luacheckrc @@ -1,6 +1,7 @@ allow_defined_top = true ignore = { + "631", -- Line is too long. "get_debug_grid", } diff --git a/luacheck.lua b/luacheck.lua new file mode 100755 index 0000000..5ce267c --- /dev/null +++ b/luacheck.lua @@ -0,0 +1,129 @@ +local exec = os.execute +local fmt, find, sub = string.format, string.find, string.sub +local var = "[%w%.%[%]\"\'_]" + +exec("reset") + +local function split(str, delim, include_empty, max_splits, sep_is_pattern) + delim = delim or "," + max_splits = max_splits or -2 + local items = {} + local pos, len = 1, #str + local plain = not sep_is_pattern + max_splits = max_splits + 1 + repeat + local np, npe = find(str, delim, pos, plain) + np, npe = (np or (len+1)), (npe or (len+1)) + if (not np) or (max_splits == 1) then + np = len + 1 + npe = np + end + local s = sub(str, pos, np - 1) + if include_empty or (s ~= "") then + max_splits = max_splits - 1 + items[#items + 1] = s + end + pos = npe + 1 + until (max_splits == 0) or (pos > (len + 1)) + return items +end + +local files = { + "api", + "bags", + "caches", + "callbacks", + "common", + "compress", + "detached_inv", + "groups", + "gui", + "hud", + "model_aliases", + "progressive", + "styles", +} + +local operators = { + ["([%+%-%*%^/&|])="] = function(a, b, c) + return fmt("%s = %s %s %s", a, a, b, c) + end, + + ["+%+"] = function(a, b) + return fmt("%s = %s + 1\n%s", a, a, b) + end, + + ["&"] = function(a, b) + return fmt("bit.band(%s, %s)", a, b) + end, + + ["|"] = function(a, b) + return fmt("bit.bor(%s, %s)", a, b) + end, + + ["<<"] = function(a, b) + return fmt("bit.lshift(%s, %s)", a, b) + end, + + [">>"] = function(a, b) + return fmt("bit.rshift(%s, %s)", a, b) + end, + + ["<<="] = function(a, b) + return fmt("%s = bit.lshift(%s, %s)", a, a, b) + end, + + [">>="] = function(a, b) + return fmt("%s = bit.rshift(%s, %s)", a, a, b) + end, +} + +local function compile(data) + data = data:gsub("IMPORT%((.-)%)", function(a) + return "local " .. a:gsub("\"", "") .. " = i3.get(" .. a .. ")" + end) + + for op, func in pairs(operators) do + data = data:gsub("(" .. var .. "+)%s?" .. op .. "%s?(" .. var .. "*)", func) + end + + return data +end + +for _, p in ipairs(files) do + local function _load(path, line, data, t) + if line then + if not t then + t = split(data, "\n") + end + t[line] = t[line]:gsub("(" .. var .. "+)%s?=%s?(" .. var .. "*)", "%2") + data = table.concat(t, "\n") + else + local file = assert(io.open(path, "r")) + data = file:read"*a" + file:close() + data = compile(data) + end + + local l, err = loadstring(data) + + if not l then + local err_line = tonumber(err:match(":(%d+):")) + + if line ~= err_line then + return _load(path, err_line, data, t) + end + end + + local _file = io.open(path:match("(.*)%.") .. ".l", "w") + _file:write(data) + _file:close() + end + + _load("./src/" .. p .. ".lua") +end + +exec("luacheck init.lua") +exec("luacheck ./src/operators.lua") +exec("luacheck ./src/*.l") +exec("rm ./src/*.l") diff --git a/src/common.lua b/src/common.lua index b4ca38e..4e02f04 100644 --- a/src/common.lua +++ b/src/common.lua @@ -1,6 +1,5 @@ local ItemStack = ItemStack local loadstring = loadstring -local ESC = core.formspec_escape local translate = core.get_translated_string local vec_new, vec_add, vec_mul = vector.new, vector.add, vector.multiply local sort, concat, insert = table.sort, table.concat, table.insert diff --git a/src/gui.lua b/src/gui.lua index 8cde9b5..7f7a819 100644 --- a/src/gui.lua +++ b/src/gui.lua @@ -241,9 +241,9 @@ local function get_isometric_view(fs, pos, X, Y) local p = area:position(idx) p = vec_sub(p, pos) + local size = 0.25 local x = 2 + (size / 2 * (p.z - p.x)) local y = 1.15 + (size / 4 * (p.x + p.z - 2 * p.y)) - local size = 0.25 if plant then size -= 0.05 diff --git a/src/operators.lua b/src/operators.lua index 6d96041..ef9d96a 100644 --- a/src/operators.lua +++ b/src/operators.lua @@ -1,7 +1,7 @@ --[[ All source files have to be preprocessed before loading. This allows implementing custom operators like bitwise ones. ]] -local fmt = string.format +local fmt, split = string.format, string.split local var = "[%w%.%[%]\"\'_]" local operators = { @@ -53,7 +53,7 @@ end local function _load(path, line, data, t) if line then if not t then - t = data:split"\n" + t = split(data, "\n") end t[line] = t[line]:gsub("(" .. var .. "+)%s?=%s?(" .. var .. "*)", "%2") data = table.concat(t, "\n")