diff --git a/src/css/libdom.zig b/src/css/libdom.zig index 8fb23aad..57d4af54 100644 --- a/src/css/libdom.zig +++ b/src/css/libdom.zig @@ -20,6 +20,11 @@ pub const Node = struct { return null; } + pub fn isElement(n: Node) bool { + const t = parser.nodeType(n.node) catch return false; + return t == .element; + } + pub fn tag(n: Node) ![]const u8 { return try parser.nodeName(n.node); } diff --git a/src/css/match_test.zig b/src/css/match_test.zig index 5df71da6..a37de623 100644 --- a/src/css/match_test.zig +++ b/src/css/match_test.zig @@ -16,6 +16,10 @@ pub const Node = struct { return n.sibling; } + pub fn isElement(_: *const Node) bool { + return true; + } + pub fn tag(n: *const Node) ![]const u8 { return n.name; } diff --git a/src/css/selector.zig b/src/css/selector.zig index 30c0a147..0ce92099 100644 --- a/src/css/selector.zig +++ b/src/css/selector.zig @@ -167,7 +167,7 @@ pub const Selector = union(enum) { pub fn match(s: Selector, n: anytype) !bool { return switch (s) { - .tag => |v| std.ascii.eqlIgnoreCase(v, try n.tag()), + .tag => |v| n.isElement() and std.ascii.eqlIgnoreCase(v, try n.tag()), else => false, }; }