summaryrefslogtreecommitdiff
path: root/builtin/common
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/common')
-rw-r--r--builtin/common/filterlist.lua2
-rw-r--r--builtin/common/misc_helpers.lua59
-rw-r--r--builtin/common/serialize.lua13
-rw-r--r--builtin/common/strict.lua14
4 files changed, 55 insertions, 33 deletions
diff --git a/builtin/common/filterlist.lua b/builtin/common/filterlist.lua
index 210681133..2a62362e3 100644
--- a/builtin/common/filterlist.lua
+++ b/builtin/common/filterlist.lua
@@ -189,7 +189,7 @@ function filterlist.process(self)
for k,v in pairs(self.m_raw_list) do
if self.m_filtercriteria == nil or
self.m_filter_fct(v,self.m_filtercriteria) then
- table.insert(self.m_processed_list,v)
+ self.m_processed_list[#self.m_processed_list + 1] = v
end
end
diff --git a/builtin/common/misc_helpers.lua b/builtin/common/misc_helpers.lua
index bf672e6da..e4653d41d 100644
--- a/builtin/common/misc_helpers.lua
+++ b/builtin/common/misc_helpers.lua
@@ -2,7 +2,6 @@
--------------------------------------------------------------------------------
-- Localize functions to avoid table lookups (better performance).
-local table_insert = table.insert
local string_sub, string_find = string.sub, string.find
--------------------------------------------------------------------------------
@@ -94,13 +93,13 @@ function dump2(o, name, dumped)
-- the form _G["table: 0xFFFFFFF"]
keyStr = string.format("_G[%q]", tostring(k))
-- Dump key table
- table_insert(t, dump2(k, keyStr, dumped))
+ t[#t + 1] = dump2(k, keyStr, dumped)
end
else
keyStr = basic_dump(k)
end
local vname = string.format("%s[%s]", name, keyStr)
- table_insert(t, dump2(v, vname, dumped))
+ t[#t + 1] = dump2(v, vname, dumped)
end
return string.format("%s = {}\n%s", name, table.concat(t))
end
@@ -135,7 +134,7 @@ function dump(o, indent, nested, level)
local t = {}
local dumped_indexes = {}
for i, v in ipairs(o) do
- table_insert(t, dump(v, indent, nested, level + 1))
+ t[#t + 1] = dump(v, indent, nested, level + 1)
dumped_indexes[i] = true
end
for k, v in pairs(o) do
@@ -144,7 +143,7 @@ function dump(o, indent, nested, level)
k = "["..dump(k, indent, nested, level + 1).."]"
end
v = dump(v, indent, nested, level + 1)
- table_insert(t, k.." = "..v)
+ t[#t + 1] = k.." = "..v
end
end
nested[o] = nil
@@ -177,7 +176,7 @@ function string.split(str, delim, include_empty, max_splits, sep_is_pattern)
local s = string_sub(str, pos, np - 1)
if include_empty or (s ~= "") then
max_splits = max_splits - 1
- table_insert(items, s)
+ items[#items + 1] = s
end
pos = npe + 1
until (max_splits == 0) or (pos > (len + 1))
@@ -186,8 +185,8 @@ end
--------------------------------------------------------------------------------
function table.indexof(list, val)
- for i = 1, #list do
- if list[i] == val then
+ for i, v in ipairs(list) do
+ if v == val then
return i
end
end
@@ -324,7 +323,7 @@ function core.splittext(text,charlimit)
local last_line = ""
while start ~= nil do
if string.len(last_line) + (stop-start) > charlimit then
- table_insert(retval, last_line)
+ retval[#retval + 1] = last_line
last_line = ""
end
@@ -335,7 +334,7 @@ function core.splittext(text,charlimit)
last_line = last_line .. string_sub(text, current_idx, stop - 1)
if gotnewline then
- table_insert(retval, last_line)
+ retval[#retval + 1] = last_line
last_line = ""
gotnewline = false
end
@@ -353,11 +352,11 @@ function core.splittext(text,charlimit)
--add last part of text
if string.len(last_line) + (string.len(text) - current_idx) > charlimit then
- table_insert(retval, last_line)
- table_insert(retval, string_sub(text, current_idx))
+ retval[#retval + 1] = last_line
+ retval[#retval + 1] = string_sub(text, current_idx)
else
last_line = last_line .. " " .. string_sub(text, current_idx)
- table_insert(retval, last_line)
+ retval[#retval + 1] = last_line
end
return retval
@@ -430,14 +429,14 @@ if INIT == "game" then
if iswall then
core.set_node(pos, {name = wield_name,
- param2 = dirs1[fdir+1]})
+ param2 = dirs1[fdir + 1]})
elseif isceiling then
if orient_flags.force_facedir then
core.set_node(pos, {name = wield_name,
param2 = 20})
else
core.set_node(pos, {name = wield_name,
- param2 = dirs2[fdir+1]})
+ param2 = dirs2[fdir + 1]})
end
else -- place right side up
if orient_flags.force_facedir then
@@ -555,6 +554,36 @@ assert(core.string_to_pos("( 10.0, 5, -2)").z == -2)
assert(core.string_to_pos("asd, 5, -2)") == nil)
--------------------------------------------------------------------------------
+function core.string_to_area(value)
+ local p1, p2 = unpack(value:split(") ("))
+ if p1 == nil or p2 == nil then
+ return nil
+ end
+
+ p1 = core.string_to_pos(p1 .. ")")
+ p2 = core.string_to_pos("(" .. p2)
+ if p1 == nil or p2 == nil then
+ return nil
+ end
+
+ return p1, p2
+end
+
+local function test_string_to_area()
+ local p1, p2 = core.string_to_area("(10.0, 5, -2) ( 30.2, 4, -12.53)")
+ assert(p1.x == 10.0 and p1.y == 5 and p1.z == -2)
+ assert(p2.x == 30.2 and p2.y == 4 and p2.z == -12.53)
+
+ p1, p2 = core.string_to_area("(10.0, 5, -2 30.2, 4, -12.53")
+ assert(p1 == nil and p2 == nil)
+
+ p1, p2 = core.string_to_area("(10.0, 5,) -2 fgdf2, 4, -12.53")
+ assert(p1 == nil and p2 == nil)
+end
+
+test_string_to_area()
+
+--------------------------------------------------------------------------------
function table.copy(t, seen)
local n = {}
seen = seen or {}
diff --git a/builtin/common/serialize.lua b/builtin/common/serialize.lua
index 90b8b2ad6..b2165648e 100644
--- a/builtin/common/serialize.lua
+++ b/builtin/common/serialize.lua
@@ -104,7 +104,7 @@ function core.serialize(x)
local i = local_index
local_index = local_index + 1
var = "_["..i.."]"
- table.insert(local_defs, var.." = "..val)
+ local_defs[#local_defs + 1] = var.." = "..val
dumped[x] = var
return var
end
@@ -135,16 +135,15 @@ function core.serialize(x)
local np = nest_points[x]
for i, v in ipairs(x) do
if not np or not np[i] then
- table.insert(vals, dump_or_ref_val(v))
+ vals[#vals + 1] = dump_or_ref_val(v)
end
idx_dumped[i] = true
end
for k, v in pairs(x) do
if (not np or not np[k]) and
not idx_dumped[k] then
- table.insert(vals,
- "["..dump_or_ref_val(k).."] = "
- ..dump_or_ref_val(v))
+ vals[#vals + 1] = "["..dump_or_ref_val(k).."] = "
+ ..dump_or_ref_val(v)
end
end
return "{"..table.concat(vals, ", ").."}"
@@ -156,9 +155,9 @@ function core.serialize(x)
local function dump_nest_points()
for parent, vals in pairs(nest_points) do
for k, v in pairs(vals) do
- table.insert(local_defs, dump_or_ref_val(parent)
+ local_defs[#local_defs + 1] = dump_or_ref_val(parent)
.."["..dump_or_ref_val(k).."] = "
- ..dump_or_ref_val(v))
+ ..dump_or_ref_val(v)
end
end
end
diff --git a/builtin/common/strict.lua b/builtin/common/strict.lua
index c7b86461f..05ceadf7a 100644
--- a/builtin/common/strict.lua
+++ b/builtin/common/strict.lua
@@ -9,11 +9,6 @@ function core.global_exists(name)
end
-local function warn(message)
- print(os.date("%H:%M:%S: WARNING: ")..message)
-end
-
-
local meta = {}
local declared = {}
-- Key is source file, line, and variable name; seperated by NULs
@@ -27,7 +22,7 @@ function meta:__newindex(name, value)
info.currentline, name)
if not warned[warn_key] and info.what ~= "main" and
info.what ~= "C" then
- warn(("Assignment to undeclared "..
+ core.log("warning", ("Assignment to undeclared "..
"global %q inside a function at %s.")
:format(name, desc))
warned[warn_key] = true
@@ -35,9 +30,8 @@ function meta:__newindex(name, value)
declared[name] = true
end
-- Ignore mod namespaces
- if WARN_INIT and (not core.get_current_modname or
- name ~= core.get_current_modname()) then
- warn(("Global variable %q created at %s.")
+ if WARN_INIT and name ~= core.get_current_modname() then
+ core.log("warning", ("Global variable %q created at %s.")
:format(name, desc))
end
rawset(self, name, value)
@@ -48,7 +42,7 @@ function meta:__index(name)
local info = debug.getinfo(2, "Sl")
local warn_key = ("%s\0%d\0%s"):format(info.source, info.currentline, name)
if not declared[name] and not warned[warn_key] and info.what ~= "C" then
- warn(("Undeclared global variable %q accessed at %s:%s")
+ core.log("warning", ("Undeclared global variable %q accessed at %s:%s")
:format(name, info.short_src, info.currentline))
warned[warn_key] = true
end