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(.{