axtree: reverse writeNode return logic

This commit is contained in:
Pierre Tachoire
2026-01-09 17:41:01 +01:00
parent f5036bdf5e
commit 04eda96416

View File

@@ -54,12 +54,9 @@ pub const Writer = struct {
try w.beginArray(); try w.beginArray();
const root = try AXNode.fromNode(node.dom); const root = try AXNode.fromNode(node.dom);
if (try self.writeNode(node.id, root, w)) { if (try self.writeNode(node.id, root, w)) {
// skip children try self.writeNodeChildren(root, w);
try w.endArray();
return;
} }
try self.writeNodeChildren(root, w); return w.endArray();
try w.endArray();
} }
fn writeNodeChildren(self: *const Writer, parent: AXNode, w: anytype) !void { fn writeNodeChildren(self: *const Writer, parent: AXNode, w: anytype) !void {
@@ -82,10 +79,8 @@ pub const Writer = struct {
const node = try self.registry.register(dom_node); const node = try self.registry.register(dom_node);
const axn = try AXNode.fromNode(node.dom); const axn = try AXNode.fromNode(node.dom);
if (try self.writeNode(node.id, axn, w)) { if (try self.writeNode(node.id, axn, w)) {
// skip children try self.writeNodeChildren(axn, w);
continue;
} }
try self.writeNodeChildren(axn, w);
} }
} }
@@ -205,7 +200,7 @@ pub const Writer = struct {
try w.endObject(); try w.endObject();
} }
// write a node. returns true if children must be skipped. // write a node. returns true if children must be written.
fn writeNode(self: *const Writer, id: u32, axn: AXNode, w: anytype) !bool { fn writeNode(self: *const Writer, id: u32, axn: AXNode, w: anytype) !bool {
// ignore empty texts // ignore empty texts
try w.beginObject(); try w.beginObject();
@@ -264,12 +259,12 @@ pub const Writer = struct {
} }
// Children // Children
const skip_children = axn.ignoreChildren(); const write_children = axn.ignoreChildren() == false;
const skip_text = ignoreText(axn.dom); const skip_text = ignoreText(axn.dom);
try w.objectField("childIds"); try w.objectField("childIds");
try w.beginArray(); try w.beginArray();
if (!skip_children) { if (write_children) {
var registry = self.registry; var registry = self.registry;
var it = n.childrenIterator(); var it = n.childrenIterator();
while (it.next()) |child| { while (it.next()) |child| {
@@ -286,7 +281,7 @@ pub const Writer = struct {
try w.endObject(); try w.endObject();
return skip_children; return write_children;
} }
}; };