diff options
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/mainmenu_helper.lua | 165 | ||||
-rw-r--r-- | builtin/misc_helpers.lua | 145 |
2 files changed, 142 insertions, 168 deletions
diff --git a/builtin/mainmenu_helper.lua b/builtin/mainmenu_helper.lua deleted file mode 100644 index 1bdd33cc6..000000000 --- a/builtin/mainmenu_helper.lua +++ /dev/null @@ -1,165 +0,0 @@ --------------------------------------------------------------------------------- -function dump(o, dumped) - dumped = dumped or {} - if type(o) == "number" then - return tostring(o) - elseif type(o) == "string" then - return string.format("%q", o) - elseif type(o) == "table" then - if dumped[o] then - return "<circular reference>" - end - dumped[o] = true - local t = {} - for k,v in pairs(o) do - t[#t+1] = "" .. k .. " = " .. dump(v, dumped) - end - return "{" .. table.concat(t, ", ") .. "}" - elseif type(o) == "boolean" then - return tostring(o) - elseif type(o) == "function" then - return "<function>" - elseif type(o) == "userdata" then - return "<userdata>" - elseif type(o) == "nil" then - return "nil" - else - error("cannot dump a " .. type(o)) - return nil - end -end - --------------------------------------------------------------------------------- -function string:split(sep) - local sep, fields = sep or ",", {} - local pattern = string.format("([^%s]+)", sep) - self:gsub(pattern, function(c) fields[#fields+1] = c end) - return fields -end - --------------------------------------------------------------------------------- -function string:trim() - return (self:gsub("^%s*(.-)%s*$", "%1")) -end - --------------------------------------------------------------------------------- -engine.get_game = function(index) - local games = game.get_games() - - if index > 0 and index <= #games then - return games[index] - end - - return nil -end - --------------------------------------------------------------------------------- -function fs_escape_string(text) - if text ~= nil then - while (text:find("\r\n") ~= nil) do - local newtext = text:sub(1,text:find("\r\n")-1) - newtext = newtext .. " " .. text:sub(text:find("\r\n")+3) - - text = newtext - end - - while (text:find("\n") ~= nil) do - local newtext = text:sub(1,text:find("\n")-1) - newtext = newtext .. " " .. text:sub(text:find("\n")+1) - - text = newtext - end - - while (text:find("\r") ~= nil) do - local newtext = text:sub(1,text:find("\r")-1) - newtext = newtext .. " " .. text:sub(text:find("\r")+1) - - text = newtext - end - - text = string.gsub(text,"\\","\\\\") - text = string.gsub(text,"%]","\\]") - text = string.gsub(text,"%[","\\[") - text = string.gsub(text,";","\\;") - text = string.gsub(text,",","\\,") - end - return text -end - --------------------------------------------------------------------------------- -function explode_textlist_event(text) - - local retval = {} - retval.typ = "INV" - - local parts = text:split(":") - - if #parts == 2 then - retval.typ = parts[1]:trim() - retval.index= tonumber(parts[2]:trim()) - - if type(retval.index) ~= "number" then - retval.typ = "INV" - end - end - - return retval -end - --------------------------------------------------------------------------------- -function get_last_folder(text,count) - local parts = text:split(DIR_DELIM) - - if count == nil then - return parts[#parts] - end - - local retval = "" - for i=1,count,1 do - retval = retval .. parts[#parts - (count-i)] .. DIR_DELIM - end - - return retval -end - --------------------------------------------------------------------------------- -function cleanup_path(temppath) - - local parts = temppath:split("-") - temppath = "" - for i=1,#parts,1 do - if temppath ~= "" then - temppath = temppath .. "_" - end - temppath = temppath .. parts[i] - end - - parts = temppath:split(".") - temppath = "" - for i=1,#parts,1 do - if temppath ~= "" then - temppath = temppath .. "_" - end - temppath = temppath .. parts[i] - end - - parts = temppath:split("'") - temppath = "" - for i=1,#parts,1 do - if temppath ~= "" then - temppath = temppath .. "" - end - temppath = temppath .. parts[i] - end - - parts = temppath:split(" ") - temppath = "" - for i=1,#parts,1 do - if temppath ~= "" then - temppath = temppath - end - temppath = temppath .. parts[i] - end - - return temppath -end
\ No newline at end of file diff --git a/builtin/misc_helpers.lua b/builtin/misc_helpers.lua index 0439415b1..0f49bc3a6 100644 --- a/builtin/misc_helpers.lua +++ b/builtin/misc_helpers.lua @@ -1,5 +1,6 @@ -- Minetest: builtin/misc_helpers.lua +-------------------------------------------------------------------------------- function basic_dump2(o) if type(o) == "number" then return tostring(o) @@ -19,6 +20,7 @@ function basic_dump2(o) end end +-------------------------------------------------------------------------------- function dump2(o, name, dumped) name = name or "_" dumped = dumped or {} @@ -44,6 +46,7 @@ function dump2(o, name, dumped) end end +-------------------------------------------------------------------------------- function dump(o, dumped) dumped = dumped or {} if type(o) == "number" then @@ -74,6 +77,7 @@ function dump(o, dumped) end end +-------------------------------------------------------------------------------- function string:split(sep) local sep, fields = sep or ",", {} local pattern = string.format("([^%s]+)", sep) @@ -81,16 +85,16 @@ function string:split(sep) return fields end +-------------------------------------------------------------------------------- function string:trim() return (self:gsub("^%s*(.-)%s*$", "%1")) end assert(string.trim("\n \t\tfoo bar\t ") == "foo bar") -function minetest.pos_to_string(pos) - return "(" .. pos.x .. "," .. pos.y .. "," .. pos.z .. ")" -end + +-------------------------------------------------------------------------------- function math.hypot(x, y) local t x = math.abs(x) @@ -102,3 +106,138 @@ function math.hypot(x, y) return x * math.sqrt(1 + t * t) end +-------------------------------------------------------------------------------- +function explode_textlist_event(text) + + local retval = {} + retval.typ = "INV" + + local parts = text:split(":") + + if #parts == 2 then + retval.typ = parts[1]:trim() + retval.index= tonumber(parts[2]:trim()) + + if type(retval.index) ~= "number" then + retval.typ = "INV" + end + end + + return retval +end + +-------------------------------------------------------------------------------- +function get_last_folder(text,count) + local parts = text:split(DIR_DELIM) + + if count == nil then + return parts[#parts] + end + + local retval = "" + for i=1,count,1 do + retval = retval .. parts[#parts - (count-i)] .. DIR_DELIM + end + + return retval +end + +-------------------------------------------------------------------------------- +function cleanup_path(temppath) + + local parts = temppath:split("-") + temppath = "" + for i=1,#parts,1 do + if temppath ~= "" then + temppath = temppath .. "_" + end + temppath = temppath .. parts[i] + end + + parts = temppath:split(".") + temppath = "" + for i=1,#parts,1 do + if temppath ~= "" then + temppath = temppath .. "_" + end + temppath = temppath .. parts[i] + end + + parts = temppath:split("'") + temppath = "" + for i=1,#parts,1 do + if temppath ~= "" then + temppath = temppath .. "" + end + temppath = temppath .. parts[i] + end + + parts = temppath:split(" ") + temppath = "" + for i=1,#parts,1 do + if temppath ~= "" then + temppath = temppath + end + temppath = temppath .. parts[i] + end + + return temppath +end + +-------------------------------------------------------------------------------- +-- mainmenu only functions +-------------------------------------------------------------------------------- +if engine ~= nil then + engine.get_game = function(index) + local games = game.get_games() + + if index > 0 and index <= #games then + return games[index] + end + + return nil + end + + -------------------------------------------------------------------------------- + function fs_escape_string(text) + if text ~= nil then + while (text:find("\r\n") ~= nil) do + local newtext = text:sub(1,text:find("\r\n")-1) + newtext = newtext .. " " .. text:sub(text:find("\r\n")+3) + + text = newtext + end + + while (text:find("\n") ~= nil) do + local newtext = text:sub(1,text:find("\n")-1) + newtext = newtext .. " " .. text:sub(text:find("\n")+1) + + text = newtext + end + + while (text:find("\r") ~= nil) do + local newtext = text:sub(1,text:find("\r")-1) + newtext = newtext .. " " .. text:sub(text:find("\r")+1) + + text = newtext + end + + text = string.gsub(text,"\\","\\\\") + text = string.gsub(text,"%]","\\]") + text = string.gsub(text,"%[","\\[") + text = string.gsub(text,";","\\;") + text = string.gsub(text,",","\\,") + end + return text + end +end + +-------------------------------------------------------------------------------- +-- core only fct +-------------------------------------------------------------------------------- +if minetest ~= nil then + -------------------------------------------------------------------------------- + function minetest.pos_to_string(pos) + return "(" .. pos.x .. "," .. pos.y .. "," .. pos.z .. ")" + end +end |