DNS record management, CSS grid, Regex, location.query

This commit is contained in:
Face
2025-08-20 14:37:57 +03:00
parent 99f17dc42c
commit e8508bfe33
22 changed files with 1351 additions and 123 deletions

View File

@@ -173,6 +173,76 @@ func _gurt_location_get_href_handler(vm: LuauVM) -> int:
vm.lua_pushstring("")
return 1
func _gurt_location_query_get_handler(vm: LuauVM) -> int:
var key: String = vm.luaL_checkstring(1)
var query_params = get_current_query_params()
if query_params.has(key):
vm.lua_pushstring(query_params[key])
else:
vm.lua_pushnil()
return 1
func _gurt_location_query_has_handler(vm: LuauVM) -> int:
var key: String = vm.luaL_checkstring(1)
var query_params = get_current_query_params()
vm.lua_pushboolean(query_params.has(key))
return 1
func _gurt_location_query_getAll_handler(vm: LuauVM) -> int:
var key: String = vm.luaL_checkstring(1)
var query_params = get_current_query_params()
vm.lua_newtable()
if query_params.has(key):
var value = query_params[key]
if value is Array:
for i in range(value.size()):
vm.lua_pushstring(str(value[i]))
vm.lua_rawseti(-2, i + 1)
else:
vm.lua_pushstring(str(value))
vm.lua_rawseti(-2, 1)
return 1
func get_current_query_params() -> Dictionary:
var main_node = Engine.get_main_loop().current_scene
var current_url = ""
if main_node and main_node.has_method("get_current_url"):
current_url = main_node.get_current_url()
elif main_node and main_node.has_property("current_domain"):
current_url = main_node.current_domain
var query_params = {}
if "?" in current_url:
var query_string = current_url.split("?")[1]
if "#" in query_string:
query_string = query_string.split("#")[0]
for param in query_string.split("&"):
if "=" in param:
var key_value = param.split("=", false, 1)
var key = key_value[0].uri_decode()
var value = key_value[1].uri_decode() if key_value.size() > 1 else ""
if query_params.has(key):
if query_params[key] is Array:
query_params[key].append(value)
else:
query_params[key] = [query_params[key], value]
else:
query_params[key] = value
else:
var key = param.uri_decode()
query_params[key] = ""
return query_params
func _reload_current_page():
var main_node = Engine.get_main_loop().current_scene
if main_node and main_node.has_method("reload_current_page"):
@@ -660,6 +730,12 @@ func _handle_text_setting(operation: Dictionary):
var element_id = get_or_assign_element_id(element)
var dom_node = dom_parser.parse_result.dom_nodes.get(element_id, null)
if dom_node:
if element.tag_name == "button":
var button_node = dom_node.get_node_or_null("ButtonNode")
if button_node and button_node is Button:
button_node.text = text
return
var text_node = get_dom_node(dom_node, "text")
if text_node:
if text_node is RichTextLabel: