summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2024-03-08 10:47:15 +0100
committerkdx <kikoodx@paranoici.org>2024-03-08 10:47:15 +0100
commit65c6a3a1e827ea1d1795cec55e214d311665d882 (patch)
tree053fcc859e288ddb42b1e2cbf185542a34cbe894
parent666604670ef4cf6eb0d0f54956d32d08c61e80af (diff)
downloadgallery-gen-65c6a3a1e827ea1d1795cec55e214d311665d882.tar.gz
let me cook
-rwxr-xr-xrun.sh8
-rw-r--r--src/main.zig12
-rw-r--r--src/template.zig60
3 files changed, 71 insertions, 9 deletions
diff --git a/run.sh b/run.sh
index 9683e5f..db231f9 100755
--- a/run.sh
+++ b/run.sh
@@ -1,7 +1,7 @@
#!/bin/sh
-zig build
+zig build || exit 1
CWD="$(pwd)"
-cd ~/projects/kdx.re/gallery
-"$CWD"/zig-out/bin/gallery-gen
-cd ..
+cd ~/projects/kdx.re/gallery || exit 1
+"$CWD"/zig-out/bin/gallery-gen || exit 1
+cd .. || exit 1
make
diff --git a/src/main.zig b/src/main.zig
index 26344f1..4803f7e 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -46,13 +46,17 @@ pub fn main() !void {
}
for (images, 0..) |img, i| {
- var file = try std.fs.cwd().createFile(img.path(.html), .{});
- defer file.close();
- try template.write(
- file.writer().any(),
+ try template.writeToFile(
img,
if (i == images.len - 1) null else images[i + 1],
if (i == 0) null else images[i - 1],
+ .regular,
+ );
+ try template.writeToFile(
+ img,
+ if (i == images.len - 1) null else images[i + 1],
+ if (i == 0) null else images[i - 1],
+ .large,
);
}
}
diff --git a/src/template.zig b/src/template.zig
index 38dd9fb..d6a80e5 100644
--- a/src/template.zig
+++ b/src/template.zig
@@ -27,16 +27,52 @@ const template2 =
\\</html>
;
+const Size = enum {
+ regular,
+ large,
+
+ fn prefix(self: Size) []const u8 {
+ return switch (self) {
+ .regular => "",
+ .large => "large.",
+ };
+ }
+};
+
+pub fn writeToFile(
+ image: Image,
+ previous: ?Image,
+ next: ?Image,
+ size: Size,
+) !void {
+ var buf: [1024]u8 = undefined;
+ const prefix = size.prefix();
+ const html_path = image.path(.html);
+ const path = buf[0 .. prefix.len + html_path.len];
+ @memcpy(path[0..prefix.len], prefix);
+ @memcpy(path[prefix.len..path.len], html_path);
+ var file = try std.fs.cwd().createFile(path, .{});
+ defer file.close();
+ try write(
+ file.writer().any(),
+ image,
+ previous,
+ next,
+ size,
+ );
+}
+
pub fn write(
writer: std.io.AnyWriter,
image: Image,
previous: ?Image,
next: ?Image,
+ size: Size,
) !void {
try writer.print(template0, .{ image.name(), image.name() });
try prevnext(writer, previous, next);
try writer.print(template1, .{image.path(null)});
- try prevnext(writer, previous, next);
+ try sizeselect(writer, image, size);
_ = try writer.write(template2);
}
@@ -56,3 +92,25 @@ fn prevnext(writer: std.io.AnyWriter, previous: ?Image, next: ?Image) !void {
else
_ = try writer.write(" &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>");
}
+
+fn sizelink(writer: std.io.AnyWriter, image: Image, size: Size) !void {
+ try writer.print("<a href=\"/gallery/{s}{s}\">", .{
+ size.prefix(),
+ image.name(),
+ });
+}
+
+fn sizeselect(writer: std.io.AnyWriter, image: Image, size: Size) !void {
+ switch (size) {
+ .large => {
+ _ = try writer.write(" <p>");
+ try sizelink(writer, image, .regular);
+ _ = try writer.write("small</a> | large</p>");
+ },
+ .regular => {
+ _ = try writer.write(" <p>small | ");
+ try sizelink(writer, image, .large);
+ _ = try writer.write("large</a></p>");
+ },
+ }
+}