aboutsummaryrefslogtreecommitdiff
path: root/src/link.zig
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2026-04-19 21:45:18 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2026-04-19 21:45:18 +0200
commitb9d58fbbd94dc8f97f9f4c6c333039386bbbeaa1 (patch)
treecdf2b3454978614c420ec3454be25e182b6dea8a /src/link.zig
parentec6f949c48323a0bea244b723af547f60e0db33f (diff)
feat(lib): zig specific function
Diffstat (limited to 'src/link.zig')
-rw-r--r--src/link.zig18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/link.zig b/src/link.zig
index fd29cb5..74cf08c 100644
--- a/src/link.zig
+++ b/src/link.zig
@@ -12,16 +12,13 @@ const doTestError = testing.doError;
pub const Error = error{InvalidLink} || Lexer.Error || content.Error;
pub fn parse(alloc: Allocator, l: *Lexer) Error!Element {
- var el = try Element.init(alloc, .content, "a");
- errdefer el.deinit();
const data = try parseData(alloc, l);
- const second = data.second orelse {
- el.deinit();
- return data.first.?;
- };
+ const second = data.second orelse return data.first.?;
defer alloc.free(second);
var in = if (data.first) |first| first else try Element.initLitEscaped(alloc, second);
errdefer in.deinit();
+ var el = try Element.init(alloc, .content, "a");
+ errdefer el.deinit();
try el.appendContent(in);
try el.setAttribute("href", second);
return el;
@@ -33,16 +30,15 @@ pub const Data = struct {
};
pub fn parseData(alloc: Allocator, l: *Lexer) Error!Data {
- var el = Element.initEmpty(alloc);
- errdefer el.deinit();
var v = (try l.next(alloc)).?;
defer v.deinit();
if (v.kind != .link) return Error.InvalidLink;
if (!eql(u8, v.content.items, "[")) {
- const first = try Element.initLitEscaped(alloc, v.content.items);
- el.deinit();
- return .{ .first = first, .second = null };
+ const el = try Element.initLitEscaped(alloc, v.content.items);
+ return .{ .first = el, .second = null };
}
+ var el = Element.initEmpty(alloc);
+ errdefer el.deinit();
while (l.nextKind()) |kind| {
switch (kind) {
.weak_delimiter, .strong_delimiter => return Error.InvalidLink,