commit ffed5fc46fc8b98700184a2915742a89375698ae
parent bbb272451cdafb8bfd8bf1b29638e4de90471b39
Author: Christian Ermann <christianermann@gmail.com>
Date: Sun, 1 Mar 2026 19:02:03 -0800
Improve object, method, and function rendering
Diffstat:
1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/src/main.zig b/src/main.zig
@@ -661,17 +661,19 @@ const Function = struct {
callback: ?CallbackType = null,
args: ?[]ParameterType = null,
- pub fn render(self: Function, writer: anytype) !void {
+ pub fn render(self: Function, writer: anytype, indent: u32) !void {
+ try renderIndent(indent, writer);
try writer.writeAll("pub fn ");
try snakeToCamel(self.name, writer);
try writer.writeAll("(\n");
if (self.args) |args| {
for (args) |arg| {
- try writer.writeAll(" ");
+ try renderIndent(indent + 1, writer);
try arg.render(writer);
try writer.writeAll(",\n");
}
}
+ try renderIndent(indent, writer);
try writer.writeAll(") ");
if (self.returns) |returns| {
try returns.render(writer);
@@ -679,6 +681,7 @@ const Function = struct {
try writer.writeAll("void");
}
try writer.writeAll(" {\n");
+ try renderIndent(indent, writer);
try writer.writeAll("}\n");
}
};
@@ -690,11 +693,18 @@ const Object = struct {
extended: ?bool = null,
methods: []Function,
- pub fn render(self: Object, writer: anytype) !void {
+ pub fn render(self: Object, writer: anytype, indent: u32) !void {
+ try renderDoc(self, writer, indent);
+ try renderIndent(indent, writer);
+ try writer.writeAll("pub const ");
+ try snakeToPascal(self.name, writer);
+ try writer.writeAll(" = extern struct {\n");
+ try renderIndent(indent, writer);
for (self.methods) |method| {
- try method.render(writer);
+ try method.render(writer, indent + 1);
try writer.writeAll("\n");
}
+ try writer.writeAll("};\n");
}
};
@@ -821,12 +831,13 @@ pub fn main() !void {
}
try stdout.writeAll("// functions\n");
for (parsed.value.functions) |function| {
- try function.render(stdout);
+ try function.render(stdout, 0);
try stdout.writeAll("\n");
}
try stdout.writeAll("// methods\n");
for (parsed.value.objects) |object| {
- try object.render(stdout);
+ try object.render(stdout, 0);
+ try stdout.writeAll("\n");
}
}