Add custom operators (Part 2)

This commit is contained in:
Jean-Patrick Guerrero 2021-11-29 02:47:36 +01:00
parent 34548d8509
commit eaf7c486b8
5 changed files with 21 additions and 16 deletions

View File

@ -1,8 +1,8 @@
local modpath = core.get_modpath"i3" local modpath = core.get_modpath"i3"
dofile(modpath .. "/src/operators.lua") local _loadfile = dofile(modpath .. "/src/operators.lua")
local function lf(path) local function lf(path)
return loadfile(modpath .. path) return _loadfile(modpath .. path)
end end
i3 = { i3 = {

View File

@ -88,7 +88,7 @@ function i3.register_craft(def)
end end
for symbol in gmatch(concat(def.grid), ".") do for symbol in gmatch(concat(def.grid), ".") do
c = c + 1 c++
def.items[c] = def.key[symbol] def.items[c] = def.key[symbol]
end end
else else
@ -110,7 +110,7 @@ function i3.register_craft(def)
end end
for name in gmatch(concat(items, ","), "[%s%w_:]+") do for name in gmatch(concat(items, ","), "[%s%w_:]+") do
c = c + 1 c++
def.items[c] = clean_name(name) def.items[c] = clean_name(name)
end end
end end

View File

@ -104,7 +104,7 @@ local function drop_table(name, drop)
end end
if not di.rarity then if not di.rarity then
count_sure = count_sure + 1 count_sure++
end end
end end
end end
@ -146,7 +146,7 @@ local function cache_recipes(item)
end end
for k, v in pairs(replacements[item]) do for k, v in pairs(replacements[item]) do
k = k + shift k += shift
if _recipes[k] then if _recipes[k] then
_recipes[k].replacements = v _recipes[k].replacements = v

View File

@ -1,6 +1,5 @@
local fmt = string.format local fmt = string.format
local _loadfile = loadfile local var = "[%w%.%[%]\"\'_]"
local var = "[%w%.%[%]_]"
local operators = { local operators = {
["([%+%-%*%^/&|])="] = function(a, b, c) ["([%+%-%*%^/&|])="] = function(a, b, c)
@ -26,6 +25,14 @@ local operators = {
[">>"] = function(a, b) [">>"] = function(a, b)
return fmt("bit.rshift(%s, %s)", a, b) return fmt("bit.rshift(%s, %s)", a, b)
end, 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) local function compile(data)
@ -61,6 +68,6 @@ local function _load(path, line, data)
return l, err return l, err
end end
function loadfile(path) return function(path)
return _load(path) or _loadfile(path) return _load(path) or loadfile(path)
end end

View File

@ -1,24 +1,22 @@
local a, b, c = 0, 0, 0 local a, b, c = 0, 0, 0
b+=1 b+=1
c++; local foo = "bar"; c++; local foo = "bar";
print(c-=1) print(c-=1)
print(c++) print(c++)
local t = { local t = {
a = a++, a = a++,
b = b++, b = 2,
c = c++, c = c+=2,
d = a&3, d = a&3,
e = 1,
} }
t["b"] <<= 4
print(dump(t)) print(dump(t))
--c += 1 --c += 1
c*=2 c*=2
local i = 16 local i = 16
i += i<<4 i += i<<4
print(i) -- 272 print(i) -- 272
print(a+=2) -- 2 print(a+=2) -- 2
print(c++) -- 3 print(c++) -- 3
print(a-=1) -- -1 print(a-=1) -- -1