From deef3b3544774a2af6698aa38c39ba2a1ed4cef1 Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 19 Feb 2025 01:33:07 +0100 Subject: support templating only ref link/name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- src/main.zig | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 346dd02..785a182 100644 --- a/src/main.zig +++ b/src/main.zig @@ -98,9 +98,26 @@ fn ref(allocator: std.mem.Allocator, w: std.io.AnyWriter, refname: []const u8) a // XXX: track ref count? } +fn ref_link(allocator: std.mem.Allocator, w: std.io.AnyWriter, refname: []const u8) anyerror!void { + const basename = try std.mem.replaceOwned(u8, allocator, refname, " ", "_"); + defer allocator.free(basename); + const refpathSite = try joinIn(allocator, &.{SITE_PATH}, &.{ basename, ".html" }); + defer allocator.free(refpathSite); + + try w.print("/{s}", .{refpathSite}); +} + +fn ref_name(_: std.mem.Allocator, w: std.io.AnyWriter, refname: []const u8) anyerror!void { + try w.print("{s}", .{refname}); +} + fn template(allocator: std.mem.Allocator, w: std.io.AnyWriter, refname: []const u8) anyerror!void { if (std.mem.startsWith(u8, refname, "/")) { return try portal(allocator, w, refname[1..], false); + } else if (std.mem.startsWith(u8, refname, "@")) { + return try ref_link(allocator, w, refname[1..]); + } else if (std.mem.startsWith(u8, refname, "+")) { + return try ref_name(allocator, w, refname[1..]); } else { return try ref(allocator, w, refname); } -- cgit 1.4.1