173 lines
4.3 KiB
Lua
173 lines
4.3 KiB
Lua
-- console & printing related functions
|
|
|
|
---------------
|
|
-- FUNCTIONS --
|
|
---------------
|
|
|
|
------------------------------------------------------------------------------------------------------------
|
|
-- alias for 'debugInfo'
|
|
log = debugInfo
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------------
|
|
-- Build color tag for use with debugInfo
|
|
function colorTag(r, g, b, a)
|
|
local function compToLetter(comp)
|
|
if comp == nil then
|
|
return 'F'
|
|
end
|
|
comp = math.floor(clamp(comp, 0, 255) / 16) + 1
|
|
--debugInfo("Comp = " .. tostring(comp))
|
|
return ComponentToLetter[comp]
|
|
end
|
|
return "@{" .. compToLetter(r) .. compToLetter(g) .. compToLetter(b) .. compToLetter(a) .. "}"
|
|
end
|
|
|
|
-------------------------------------------------------------------------------------------------
|
|
-- Display a string, splitting it when too long
|
|
function dumpSplittedString(str)
|
|
local splitSize = 50
|
|
local numParts = math.floor(string.len(str) / splitSize) + 1
|
|
for i = 0, numParts do
|
|
debugInfo(string.sub(str, i * splitSize, i * splitSize + splitSize - 1))
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------------------------
|
|
-- display debug info with warning color
|
|
function debugWarning(msg)
|
|
debugInfo(warningTag .. msg)
|
|
end
|
|
|
|
-------------------------------------------------------------------------------------------------
|
|
-- dump content of a lua object
|
|
function luaObject(obj, maxDepth)
|
|
dumpCallStack(0)
|
|
if runCommand == nil
|
|
then
|
|
r2.print(obj)
|
|
else
|
|
__tmpInstance = obj
|
|
runCommand("luaObject", "__tmpInstance", select(maxDepth, maxDepth, 10))
|
|
__tmpInstance = nil
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------------------------------------------------------
|
|
-- dump content of a lua object (other version)
|
|
-- output : object with a "write" function that display the result. if nil, 'output' default to the global 'io'
|
|
|
|
function writeTable(t, output)
|
|
if output == nil then output = io end
|
|
function writeSpace(n)
|
|
for i = 1, n do
|
|
output.write("\t")
|
|
end
|
|
end
|
|
|
|
function writeTableR(t, n)
|
|
if (type(t) == "table")
|
|
then
|
|
|
|
output.write("{\n")
|
|
for key, value in pairs(t) do
|
|
if ( type(value) == "table")
|
|
then
|
|
writeSpace(n+1)
|
|
output.write (key)
|
|
output.write ("=")
|
|
writeTableR(value, n+1)
|
|
|
|
elseif (type(value) == "string")
|
|
then
|
|
value = "\"" ..value .. "\""
|
|
writeSpace(n+1)
|
|
output.write(key, "=", value,", \n")
|
|
elseif (type(value) == "number")
|
|
then
|
|
writeSpace(n+1)
|
|
output.write(key, "=", value,", \n")
|
|
end
|
|
end
|
|
writeSpace(n)
|
|
output.write("},\n");
|
|
end
|
|
end
|
|
|
|
writeTableR(t, 0)
|
|
end
|
|
|
|
|
|
--function loadTable(fileName)
|
|
|
|
-- local file = io.open(fileName, "r")
|
|
|
|
-- function loadTableR(file)
|
|
|
|
-- local line
|
|
-- while (line=file:read("*l")) ~= "}" then
|
|
|
|
-- if line == "{" then
|
|
-- loadTableR(file)
|
|
-- else
|
|
|
|
-- end
|
|
-- end
|
|
-- end
|
|
|
|
-- if file:read("*l") ~= "{" then
|
|
-- debugInfo("file doesn't store a valid table")
|
|
-- return
|
|
-- end
|
|
|
|
-- local resultT = loadTableR(file)
|
|
-- io.close(file)
|
|
-- return resultT
|
|
--end
|
|
|
|
|
|
-------------
|
|
-- STATICS --
|
|
-------------
|
|
|
|
|
|
ComponentToLetter = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }
|
|
warningTag = colorTag(255, 127, 0)
|
|
|
|
----------
|
|
-- INIT --
|
|
----------
|
|
|
|
|
|
-- for vianney's tests : if debugInfo function wasn't registered externally, then use the standard 'print' instead
|
|
if debugInfo == nil then
|
|
debugInfo = r2.print
|
|
else
|
|
function print(a0, a1, a2, a3, a4, a5)
|
|
local result = ""
|
|
if a0 ~= nil then result = result .. tostring(a0) end
|
|
if a1 ~= nil then result = result .. " " ..tostring(a1) end
|
|
if a2 ~= nil then result = result .. " " ..tostring(a2) end
|
|
if a3 ~= nil then result = result .. " " ..tostring(a3) end
|
|
if a4 ~= nil then result = result .. " " ..tostring(a4) end
|
|
if a5 ~= nil then result = result .. " " ..tostring(a5) end
|
|
if result ~= nil then debugInfo(result) end
|
|
end
|
|
end
|
|
|
|
|
|
function gotoFile(name, line)
|
|
local path = fileLookup(name)
|
|
if path ~= "" then
|
|
local luaEditorPath = os.getenv("R2ED_LUA_EDITOR_PATH")
|
|
if luaEditorPath == nil then
|
|
debugInfo([[ Can't launch editor to edit lua file, please set ]] ..
|
|
[[ the environment variable R2ED_LUA_EDITOR_PATH ]] ..
|
|
[[ with the path of your editor. ]])
|
|
|
|
else
|
|
launchProgram(luaEditorPath, path .. "/" .. tostring(line))
|
|
end
|
|
end
|
|
end
|
|
|