28 lines
640 B
Plaintext
28 lines
640 B
Plaintext
import "@std/mem"
|
|
import "@std/arraylist"
|
|
import "@source/ast"
|
|
|
|
Renderer :: struct {
|
|
bytes arraylist.ArrayList(u8)
|
|
}
|
|
|
|
init proc(allocator mem.Allocator) Renderer {
|
|
return Renderer{ bytes = arraylist.init(allocator) }
|
|
}
|
|
|
|
deinit proc(renderer @mut Renderer) void {
|
|
arraylist.deinit(&renderer.bytes)
|
|
}
|
|
|
|
render proc(renderer @mut Renderer, tree @ast.Tree) void ! mem.AllocError {
|
|
_ = tree
|
|
arraylist.clear(&renderer.bytes)
|
|
try append_text(renderer, "package\n")
|
|
}
|
|
|
|
|
|
@hide:file
|
|
append_text proc(renderer @mut Renderer, text []u8) void ! mem.AllocError {
|
|
for (text) |byte| try arraylist.append(&renderer.bytes, byte)
|
|
}
|