trace, console
This commit is contained in:
@@ -272,7 +272,7 @@ static func render_new_element(element: HTMLParser.HTMLElement, parent_node: Nod
|
||||
# Create the visual node for the element
|
||||
var element_node = await main_scene.create_element_node(element, dom_parser)
|
||||
if not element_node:
|
||||
LuaPrintUtils.lua_print_direct("Failed to create visual node for element: " + str(element))
|
||||
Trace.trace_log("Failed to create visual node for element: " + str(element))
|
||||
return
|
||||
|
||||
# Set metadata so ul/ol can detect dynamically added li elements
|
||||
|
||||
@@ -10,12 +10,9 @@ static func lua_print(vm: LuauVM) -> int:
|
||||
message_parts.append(value_str)
|
||||
|
||||
var final_message = "\t".join(message_parts)
|
||||
lua_print_direct(final_message)
|
||||
Trace.trace_log(final_message)
|
||||
return 0
|
||||
|
||||
static func lua_print_direct(msg) -> void:
|
||||
print("GURT LOG: ", msg)
|
||||
|
||||
static func lua_value_to_string(vm: LuauVM, index: int) -> String:
|
||||
var lua_type = vm.lua_type(index)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ extends RefCounted
|
||||
|
||||
signal script_completed(result: Dictionary)
|
||||
signal script_error(error: String)
|
||||
signal print_output(message: String)
|
||||
signal print_output(print_data: Dictionary)
|
||||
signal dom_operation_request(operation: Dictionary)
|
||||
|
||||
var lua_thread: Thread
|
||||
@@ -238,23 +238,26 @@ func _print_handler(vm: LuauVM) -> int:
|
||||
var num_args = vm.lua_gettop()
|
||||
|
||||
for i in range(1, num_args + 1):
|
||||
var arg_str = ""
|
||||
if vm.lua_isstring(i):
|
||||
arg_str = vm.lua_tostring(i)
|
||||
elif vm.lua_isnumber(i):
|
||||
arg_str = str(vm.lua_tonumber(i))
|
||||
elif vm.lua_isboolean(i):
|
||||
arg_str = "true" if vm.lua_toboolean(i) else "false"
|
||||
elif vm.lua_isnil(i):
|
||||
arg_str = "nil"
|
||||
var lua_type = vm.lua_type(i)
|
||||
if lua_type == vm.LUA_TTABLE:
|
||||
var table_data = vm.lua_todictionary(i)
|
||||
message_parts.append({
|
||||
"type": "table",
|
||||
"data": table_data
|
||||
})
|
||||
else:
|
||||
arg_str = vm.lua_typename(vm.lua_type(i))
|
||||
|
||||
message_parts.append(arg_str)
|
||||
var value_str = LuaPrintUtils.lua_value_to_string(vm, i)
|
||||
message_parts.append({
|
||||
"type": "primitive",
|
||||
"data": value_str
|
||||
})
|
||||
|
||||
var final_message = "\t".join(message_parts)
|
||||
var print_data = {
|
||||
"parts": message_parts,
|
||||
"count": message_parts.size()
|
||||
}
|
||||
|
||||
call_deferred("_emit_print_output", final_message)
|
||||
call_deferred("_emit_print_output", print_data)
|
||||
|
||||
return 0
|
||||
|
||||
@@ -267,10 +270,35 @@ func _time_sleep_handler(vm: LuauVM) -> int:
|
||||
|
||||
return 0
|
||||
|
||||
func _trace_log_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
call_deferred("_emit_trace_message", message, "lua")
|
||||
return 0
|
||||
|
||||
func _trace_warning_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
call_deferred("_emit_trace_message", message, "warning")
|
||||
return 0
|
||||
|
||||
func _trace_error_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
call_deferred("_emit_trace_message", message, "error")
|
||||
return 0
|
||||
|
||||
func _setup_threaded_gurt_api():
|
||||
lua_vm.lua_pushcallable(_print_handler, "print")
|
||||
lua_vm.lua_setglobal("print")
|
||||
|
||||
# Setup trace functions
|
||||
lua_vm.lua_pushcallable(_trace_log_handler, "_trace_log")
|
||||
lua_vm.lua_setglobal("_trace_log")
|
||||
|
||||
lua_vm.lua_pushcallable(_trace_warning_handler, "_trace_warning")
|
||||
lua_vm.lua_setglobal("_trace_warning")
|
||||
|
||||
lua_vm.lua_pushcallable(_trace_error_handler, "_trace_error")
|
||||
lua_vm.lua_setglobal("_trace_error")
|
||||
|
||||
LuaTimeUtils.setup_time_api(lua_vm)
|
||||
|
||||
lua_vm.lua_getglobal("Time")
|
||||
@@ -281,9 +309,6 @@ func _setup_threaded_gurt_api():
|
||||
|
||||
lua_vm.lua_newtable()
|
||||
|
||||
lua_vm.lua_pushcallable(_print_handler, "gurt.log")
|
||||
lua_vm.lua_setfield(-2, "log")
|
||||
|
||||
lua_vm.lua_pushcallable(_gurt_select_handler, "gurt.select")
|
||||
lua_vm.lua_setfield(-2, "select")
|
||||
|
||||
@@ -357,6 +382,7 @@ func _setup_additional_lua_apis():
|
||||
LuaCrumbsUtils.setup_crumbs_api(lua_vm)
|
||||
LuaRegexUtils.setup_regex_api(lua_vm)
|
||||
LuaURLUtils.setup_url_api(lua_vm)
|
||||
Trace.setup_trace_api(lua_vm)
|
||||
|
||||
func _table_tostring_handler(vm: LuauVM) -> int:
|
||||
vm.luaL_checktype(1, vm.LUA_TTABLE)
|
||||
@@ -370,8 +396,8 @@ func _emit_script_completed(result: Dictionary):
|
||||
func _emit_script_error(error: String):
|
||||
script_error.emit(error)
|
||||
|
||||
func _emit_print_output(message: String):
|
||||
print_output.emit(message)
|
||||
func _emit_print_output(print_data: Dictionary):
|
||||
print_output.emit(print_data)
|
||||
|
||||
func _gurt_select_all_handler(vm: LuauVM) -> int:
|
||||
var selector: String = vm.luaL_checkstring(1)
|
||||
@@ -567,3 +593,12 @@ func _create_threaded_interval(interval_id: int, delay_ms: int):
|
||||
timeout_info.timer = timer
|
||||
lua_api.add_child(timer)
|
||||
timer.start()
|
||||
|
||||
func _emit_trace_message(message: String, level: String):
|
||||
match level:
|
||||
"lua", "log":
|
||||
Trace.trace_log(message)
|
||||
"warning":
|
||||
Trace.trace_warning(message)
|
||||
"error":
|
||||
Trace.trace_error(message)
|
||||
|
||||
87
flumi/Scripts/Utils/Lua/Trace.gd
Normal file
87
flumi/Scripts/Utils/Lua/Trace.gd
Normal file
@@ -0,0 +1,87 @@
|
||||
class_name Trace
|
||||
extends RefCounted
|
||||
|
||||
signal log_message(message: String, level: String, timestamp: float)
|
||||
|
||||
enum LogLevel {
|
||||
LOG,
|
||||
WARNING,
|
||||
ERROR
|
||||
}
|
||||
|
||||
static var _instance: Trace
|
||||
static var _messages: Array[Dictionary] = []
|
||||
|
||||
static func get_instance() -> Trace:
|
||||
if not _instance:
|
||||
_instance = Trace.new()
|
||||
return _instance
|
||||
|
||||
static func trace_log(message: String) -> void:
|
||||
_emit_message(message, "log")
|
||||
|
||||
static func trace_warning(message: String) -> void:
|
||||
_emit_message(message, "warning")
|
||||
|
||||
static func trace_error(message: String) -> void:
|
||||
_emit_message(message, "error")
|
||||
|
||||
static func _emit_message(message: String, level: String) -> void:
|
||||
var timestamp = Time.get_ticks_msec() / 1000.0
|
||||
var log_entry = {
|
||||
"message": message,
|
||||
"level": level,
|
||||
"timestamp": timestamp
|
||||
}
|
||||
|
||||
_messages.append(log_entry)
|
||||
get_instance().call_deferred("emit_signal", "log_message", message, level, timestamp)
|
||||
|
||||
match level:
|
||||
"log":
|
||||
print("TRACE LOG: ", message)
|
||||
"warning":
|
||||
print("TRACE WARNING: ", message)
|
||||
"error":
|
||||
print("TRACE ERROR: ", message)
|
||||
|
||||
static func get_all_messages() -> Array[Dictionary]:
|
||||
return _messages.duplicate()
|
||||
|
||||
static func clear_messages() -> void:
|
||||
_messages.clear()
|
||||
|
||||
static func _lua_trace_log_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
vm.lua_getglobal("_trace_log")
|
||||
vm.lua_pushstring(message)
|
||||
vm.lua_call(1, 0)
|
||||
return 0
|
||||
|
||||
static func _lua_trace_warn_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
vm.lua_getglobal("_trace_warning")
|
||||
vm.lua_pushstring(message)
|
||||
vm.lua_call(1, 0)
|
||||
return 0
|
||||
|
||||
static func _lua_trace_error_handler(vm: LuauVM) -> int:
|
||||
var message = vm.luaL_checkstring(1)
|
||||
vm.lua_getglobal("_trace_error")
|
||||
vm.lua_pushstring(message)
|
||||
vm.lua_call(1, 0)
|
||||
return 0
|
||||
|
||||
static func setup_trace_api(vm: LuauVM) -> void:
|
||||
vm.lua_newtable()
|
||||
|
||||
vm.lua_pushcallable(_lua_trace_log_handler, "trace.log")
|
||||
vm.lua_setfield(-2, "log")
|
||||
|
||||
vm.lua_pushcallable(_lua_trace_warn_handler, "trace.warn")
|
||||
vm.lua_setfield(-2, "warn")
|
||||
|
||||
vm.lua_pushcallable(_lua_trace_error_handler, "trace.error")
|
||||
vm.lua_setfield(-2, "error")
|
||||
|
||||
vm.lua_setglobal("trace")
|
||||
1
flumi/Scripts/Utils/Lua/Trace.gd.uid
Normal file
1
flumi/Scripts/Utils/Lua/Trace.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://k87sfbjp7myx
|
||||
Reference in New Issue
Block a user