khanat-code-old/code/ryzom/common/data_common/r2/r2_console.lua
botanic 80660b5146 FIX #200
dont crash when neldb is missing
2014-09-11 10:50:34 -07:00

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