diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2026-04-24 17:40:33 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2026-04-24 17:40:33 +0200 |
| commit | e7fa254387e450154f03b2d1bdef361a0adb80d1 (patch) | |
| tree | fd655516c0f1e3d4925ede5d54d729a88507369b /src/content.zig | |
| parent | 263190b15ebcb1188df6fbc2bc90dca6e4ea5d8d (diff) | |
perf(lexer): do not alloc
Diffstat (limited to 'src/content.zig')
| -rw-r--r-- | src/content.zig | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/content.zig b/src/content.zig index 01d933b..e91576d 100644 --- a/src/content.zig +++ b/src/content.zig @@ -1,6 +1,6 @@ const std = @import("std"); const Allocator = std.mem.Allocator; -const Lexed = @import("lexer/Lexed.zig"); +const Token = @import("lexer/Token.zig"); const Lexer = @import("lexer/Lexer.zig"); const Element = @import("dom/Element.zig"); const parser = @import("parser.zig"); @@ -9,16 +9,15 @@ const testing = @import("testing.zig"); const doTest = testing.do; const doTestError = testing.doError; -pub const Error = error{ ModifierNotClosed, IllegalPlacement } || Lexer.Error; +pub const Error = error{ ModifierNotClosed, IllegalPlacement } || Lexer.Error || Allocator.Error; pub fn parse(alloc: Allocator, l: *Lexer) Error!Element { var content = Element.initEmpty(alloc); errdefer content.deinit(); - var v = (try l.next(alloc)).?; - defer v.deinit(); + const v = l.next().?; switch (v.kind) { .literal => { - const el = try Element.initLitEscaped(alloc, v.content.items); + const el = try Element.initLitEscaped(alloc, v.content); try content.appendContent(el); }, .bold => try content.appendContent(try parseModifier(alloc, l, .bold, "b")), @@ -29,14 +28,13 @@ pub fn parse(alloc: Allocator, l: *Lexer) Error!Element { return content; } -fn parseModifier(alloc: Allocator, l: *Lexer, knd: Lexed.Kind, tag: []const u8) Error!Element { +fn parseModifier(alloc: Allocator, l: *Lexer, knd: Token.Kind, tag: []const u8) Error!Element { var el = try Element.init(alloc, .content, tag); errdefer el.deinit(); while (l.nextKind()) |it| { if (it == knd) { // consuming the finisher - var v = (try l.next(alloc)).?; - v.deinit(); + _ = l.next(); return el; } if (it.isDelimiter()) return Error.ModifierNotClosed; |
