From 49caf892879d27a95beaf9f64bb5100b3e6e9594 Mon Sep 17 00:00:00 2001 From: Yves Biener Date: Thu, 17 Oct 2024 16:54:38 +0200 Subject: [PATCH] mod(node2buffer): correctly display and link hyper links --- src/widget/node2buffer.zig | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/widget/node2buffer.zig b/src/widget/node2buffer.zig index c30b446..d16c739 100644 --- a/src/widget/node2buffer.zig +++ b/src/widget/node2buffer.zig @@ -51,8 +51,8 @@ pub fn toBuffer( const content = value: { switch (node.token.element.type) { .text => break :value input[node.token.start..node.token.end], + .link => break :value input[node.token.start + 1 .. node.token.start + 1 + node.title.?.len], // TODO: use corresponding link contents to create 'real' links using escape sequences - .link => break :value input[node.token.start .. node.token.start + node.href.?.len + node.title.?.len + 4], .bold_close, .italic_close, .block_close, .code_close, .title_close, .href_close => { if (next_start) |s| { next_start = null; @@ -127,6 +127,17 @@ pub fn toBuffer( }); } }, + .link => { + style.ul_style = .single; + const uri = input[node.token.start + 1 + node.title.?.len + 2 .. node.token.start + 1 + node.title.?.len + 2 + node.href.?.len]; + for (content, 0..) |_, i| { + try array.append(.{ + .link = .{ .uri = uri }, + .char = .{ .grapheme = content[i .. i + 1] }, + .style = style, + }); + } + }, else => { for (content, 0..) |_, i| { try array.append(.{