From b9d58fbbd94dc8f97f9f4c6c333039386bbbeaa1 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Sun, 19 Apr 2026 21:45:18 +0200 Subject: feat(lib): zig specific function --- src/link.zig | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) (limited to 'src/link.zig') 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, -- cgit v1.2.3