From 65d7a39554f783ee566dc62364b82c20a36f3b21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Arrufat?= Date: Wed, 11 Mar 2026 16:39:59 +0900 Subject: [PATCH] SemanticTree: use payload captures for CData.Text checks Improves conciseness and idiomatic Zig style by replacing .is(CData.Text) != null and .as() with direct payload captures in if statements. --- src/SemanticTree.zig | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/SemanticTree.zig b/src/SemanticTree.zig index def373c4..8f5eb755 100644 --- a/src/SemanticTree.zig +++ b/src/SemanticTree.zig @@ -99,8 +99,7 @@ fn walk(self: @This(), node: *Node, xpath_buffer: *std.ArrayList(u8), parent_nam if (el.is(Element.Html)) |html_el| { if (html_el.getHidden()) return; } - } else if (node.is(CData.Text) != null) { - const text_node = node.as(CData.Text); + } else if (node.is(CData.Text)) |text_node| { const text = text_node.getWholeText(); if (isAllWhitespace(text)) { return; @@ -266,7 +265,7 @@ fn appendXPathSegment(node: *Node, writer: anytype, index: usize) !void { if (node.is(Element)) |el| { const tag = el.getTagNameLower(); try std.fmt.format(writer, "/{s}[{d}]", .{ tag, index }); - } else if (node.is(CData.Text) != null) { + } else if (node.is(CData.Text)) |_| { try std.fmt.format(writer, "/text()[{d}]", .{index}); } } @@ -338,8 +337,7 @@ const JsonVisitor = struct { } try self.jw.endArray(); } - } else if (node.is(CData.Text) != null) { - const text_node = node.is(CData.Text).?; + } else if (node.is(CData.Text)) |text_node| { try self.jw.objectField("nodeType"); try self.jw.write(3); try self.jw.objectField("nodeValue"); @@ -401,8 +399,7 @@ const TextVisitor = struct { if (n.len > 0) { try self.writer.writeAll(n); } - } else if (node.is(CData.Text) != null) { - const text_node = node.is(CData.Text).?; + } else if (node.is(CData.Text)) |text_node| { const trimmed = std.mem.trim(u8, text_node.getWholeText(), " \t\r\n"); if (trimmed.len > 0) { try self.writer.writeAll(trimmed);