CSS selectors in select() Lua API // fix class attr functions

This commit is contained in:
Face
2025-08-06 13:59:43 +03:00
parent f68f31d526
commit 05a959647d
7 changed files with 79 additions and 66 deletions

View File

@@ -0,0 +1,30 @@
class_name SelectorUtils
extends RefCounted
static func match_element(selector: String, element: HTMLParser.HTMLElement) -> bool:
if not element:
return false
var rule = CSSParser.CSSRule.new()
rule.init(selector)
var class_names = HTMLParser.extract_class_names(element)
var stylesheet = CSSParser.CSSStylesheet.new()
return stylesheet.selector_matches(rule, element.tag_name, "", class_names, element)
static func find_all_matching(selector: String, elements: Array[HTMLParser.HTMLElement]) -> Array[HTMLParser.HTMLElement]:
var matches: Array[HTMLParser.HTMLElement] = []
for element in elements:
if match_element(selector, element):
matches.append(element)
return matches
static func find_first_matching(selector: String, elements: Array[HTMLParser.HTMLElement]) -> HTMLParser.HTMLElement:
for element in elements:
if match_element(selector, element):
return element
return null

View File

@@ -0,0 +1 @@
uid://ce151ks0vlr2v